linux高度なコマンドawk

linux高度なコマンドawk

AWKは、テキストファイルを処理するための言語であり、強力なテキスト分析ツールです。

AWKと呼ばれるのは、3人の創設者Alfred Aho、Peter Weinberger、およびBrianKernighanの家族名の最初の文字を使用しているためです。デフォルト
を使用して、ls -lファイルのアクセス許可、ユーザー名、ファイルサイズなどを出力します。ただし、フォーマットされた出力が必要な場合はどうすればよいですか?現時点では、awkコマンドを使用する必要があります。

小さな例

$ ls -l
total 1395200
-rw-r--r-- 1 MagicBook 197121  60646319  112  2020 1.认识JVM的基本结构.mp4
-rw-r--r-- 1 MagicBook 197121 110583202  112  2020 10.垃圾收集器.mp4
-rw-r--r-- 1 MagicBook 197121 137221102  112  2020 11.收集器的选择.mp4
-rw-r--r-- 1 MagicBook 197121 204987941  112  2020 12.GC调优.mp4
-rw-r--r-- 1 MagicBook 197121  73189377  112  2020 2.虚拟机栈.mp4
-rw-r--r-- 1 MagicBook 197121  74493138  112  2020 3.程序计数器.mp4
-rw-r--r-- 1 MagicBook 197121 123329001  112  2020 4.方法区与堆.mp4
-rw-r--r-- 1 MagicBook 197121 207456340  112  2020 5.JVM性能调优监控工具.mp4
-rw-r--r-- 1 MagicBook 197121 143361728  112  2020 6.JVM最常问的面试题.mp4
-rw-r--r-- 1 MagicBook 197121  88398831  112  2020 7.类加载机制.mp4
-rw-r--r-- 1 MagicBook 197121 105331804  112  2020 8.GC算法和收集器.mp4
-rw-r--r-- 1 MagicBook 197121  98187492  112  2020 9.垃圾回收算法.mp4

$ ls -l | awk '{print $9}'

1.认识JVM的基本结构.mp4
10.垃圾收集器.mp4
11.收集器的选择.mp4
12.GC调优.mp4
2.虚拟机栈.mp4
3.程序计数器.mp4
4.方法区与堆.mp4
5.JVM性能调优监控工具.mp4
6.JVM最常问的面试题.mp4
7.类加载机制.mp4
8.GC算法和收集器.mp4
9.垃圾回收算法.mp4

runoob-awk

awk構文

awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)

オプションパラメータの説明:

  • -Ffsまたは--field-separatorfs
    は入力ファイルセパレータを指定します。fsは文字列または-F:などの正規式です。
  • -v var = valueまたは--asignvar = value
    ユーザー定義変数を割り当てます。
  • -fscripfileまたは--filescriptfile
    は、スクリプトファイルからawkコマンドを読み取ります。
  • -mfnnnおよび-mrnnnは、nnn
    の値に固有の制限を設定し、-mfオプションは、nnnに割り当てられるブロックの最大数を制限し、-mrオプションは、レコードの最大数を制限します。これらの2つの機能は、Bell Labsバージョンのawkの拡張機能であり、標準のawkには適用されません。
  • -Wコンパクトまたは--compat、-Wトラディショナルまたは--traditional
    互換性モードでawkを実行します。したがって、gawkは標準のawkとまったく同じように動作し、すべてのawk拡張機能は無視されます。
  • -W copyleftまたは--copyleft、-Wcopyrightまたは--copyrightは
    短い著作権情報を印刷します。
  • -W helpまたは--help、-Wusageまたは--usage
    すべてのawkオプションと各オプションの簡単な説明を出力します。
  • -W lintまたは--lintは
    、従来のunixプラットフォームに移植できない構造に関する警告を出力します。
  • -Wlint-oldまたは--lint-oldは
    、従来のunixプラットフォームに移植できない構造に関する警告を出力します。
  • -Wposix
    は互換モードをオンにします。ただし、次の制限は認識されません:/ x、関数キーワード、func、エスケープシーケンス、およびfsがスペースの場合、新しい行はフィールド区切り文字として使用されます。演算子=は^と^ =を置き換えることはできません。フラッシュは無効です。 。
  • -W re-intervalまたは--re-inervalを
    使用すると、間隔正規式を使用できます。ブラケット式[[:alpha:]]などの(grepのPosix文字クラス)を参照してください。
  • -W sourceprogram-textまたは--sourceprogram-text
    ソースコードとしてprogram-textを使用します。これは、-fコマンドと組み合わせることができます。
  • -Wversionまたは--version
    バグレポート情報のバージョンを出力します。

基本的な使い方

log.txtのテキスト内容は次のとおりです。

2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo

使用法1:

awk '{[pattern] action}' {filenames}   # 行匹配语句 awk '' 只能用单引号

例:

# 每行按空格或TAB分割,输出文本中的1、4项
 $ awk '{print $1,$4}' log.txt
 ---------------------------------------------
 2 a
 3 like
 This's
 10 orange,apple,mongo
 # 格式化输出
 $ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
 ---------------------------------------------
 2        a
 3        like
 This's
 10       orange,apple,mongo
 

使用法2:

awk -F  #-F相当于内置变量FS, 指定分割字符

例:

# 使用","分割
 $  awk -F, '{print $1,$2}'   log.txt
 ---------------------------------------------
 2 this is a test
 3 Are you like awk
 This's a test
 10 There are orange apple
 # 或者使用内建变量
 $ awk 'BEGIN{FS=","} {print $1,$2}'     log.txt
 ---------------------------------------------
 2 this is a test
 3 Are you like awk
 This's a test
 10 There are orange apple
 # 使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
 $ awk -F '[ ,]'  '{print $1,$2,$5}'   log.txt
 ---------------------------------------------
 2 this test
 3 Are awk
 This's a
 10 There apple

使用法3:

awk -v  # 设置变量

例:

 $ awk -va=1 '{print $1,$1+a}' log.txt
 ---------------------------------------------
 2 3
 3 4
 This's 1
 10 11
 $ awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt
 ---------------------------------------------
 2 3 2s
 3 4 3s
 This's 1 This'ss
 10 11 10s

使用法4:

awk -f {awk脚本} {文件名}

例:

 $ awk -f cal.awk log.txt

おすすめ

転載: blog.csdn.net/e891377/article/details/108819210