記事ディレクトリ
linux高度なコマンドawk
AWKは、テキストファイルを処理するための言語であり、強力なテキスト分析ツールです。
AWKと呼ばれるのは、3人の創設者Alfred Aho、Peter Weinberger、およびBrianKernighanの家族名の最初の文字を使用しているためです。デフォルト
を使用して、ls -l
ファイルのアクセス許可、ユーザー名、ファイルサイズなどを出力します。ただし、フォーマットされた出力が必要な場合はどうすればよいですか?現時点では、awk
コマンドを使用する必要があります。
小さな例
$ ls -l
total 1395200
-rw-r--r-- 1 MagicBook 197121 60646319 1月 12 2020 1.认识JVM的基本结构.mp4
-rw-r--r-- 1 MagicBook 197121 110583202 1月 12 2020 10.垃圾收集器.mp4
-rw-r--r-- 1 MagicBook 197121 137221102 1月 12 2020 11.收集器的选择.mp4
-rw-r--r-- 1 MagicBook 197121 204987941 1月 12 2020 12.GC调优.mp4
-rw-r--r-- 1 MagicBook 197121 73189377 1月 12 2020 2.虚拟机栈.mp4
-rw-r--r-- 1 MagicBook 197121 74493138 1月 12 2020 3.程序计数器.mp4
-rw-r--r-- 1 MagicBook 197121 123329001 1月 12 2020 4.方法区与堆.mp4
-rw-r--r-- 1 MagicBook 197121 207456340 1月 12 2020 5.JVM性能调优监控工具.mp4
-rw-r--r-- 1 MagicBook 197121 143361728 1月 12 2020 6.JVM最常问的面试题.mp4
-rw-r--r-- 1 MagicBook 197121 88398831 1月 12 2020 7.类加载机制.mp4
-rw-r--r-- 1 MagicBook 197121 105331804 1月 12 2020 8.GC算法和收集器.mp4
-rw-r--r-- 1 MagicBook 197121 98187492 1月 12 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
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