1.awk の概要
- awk は言語でありコマンドです。
- Linux には grep/sed/awk という 3 つの銃士コマンドがあります。
- 三銃士の特技
- grep フィルターの内容
- sedフェッチライン
- awk フェッチ列
2.awk 構文
- テイクカラム
- ファイルの最初の列 ($1) を取得します。
awk '{print $1}' 文件
- ファイルの区切り文字を指定します:
awk -F "指定的分隔符" '{print $1}' 文件
- 複数の区切り文字を指定します。
awk -F "[/@ #]+" '{print $1,$2}' 文件
- ファイルの最初の列 ($1) を取得します。
- 取行:
awk NR==2 oldboy.txt
- フィルター:
awk '/过滤的内容/' 文件
3. 練習する
-
準備: ファイルを作成し、それにコンテンツを追加します。
[root@oldboyedu ~] echo "oldboy oldgirl" >>oldboy.txt [root@oldboyedu ~] echo "oldboy oldgirl" >>oldboy.txt [root@oldboyedu ~] cat oldboy.txt oldboy oldgirl oldboy oldgirl
-
共通フェッチ
- 最初の列を取る
[root@oldboyedu ~] awk '{print $1}' oldboy.txt oldboy oldboy
- 行全体を取得します (grep を使用した方がよい場合があります)
[root@oldboyedu ~] awk '{print $0}' oldboy.txt oldboy oldgirl oldboy oldgirl
- 最初の列を取る
-
列を取得するための区切り文字を指定します (-F)
- /etc/passwd の列 1 を取得します。
awk -F ":" '{print $1}' /etc/passwd
- /etc/passwd の列 2 を取得します。
awk -F ":" '{print $2}' /etc/passwd
- /etc/passwd の末尾の列を取得します。
awk -F ":" '{print $NF}' /etc/passwd
- /etc/passwd の最後から 2 番目の列を取得します。
awk -F ":" '{print $(NF-1)}' /etc/passwd
- /etc/passwd の列 1 を取得します。
-
複数の列を同時に出力する
- /etc/passwd の列 1 と列 2 を取得します。
awk -F ":" '{print $1,$2}' /etc/passwd
- /etc/passwd の 1 列目、3 列目、最後の列を取得します。
awk -F ":" '{print $1,$3,$NF}' /etc/passwd
- /etc/passwd の列 1 と列 2 を取得します。
-
複合トレーニング
- ip a または ifconfig の結果から IP アドレスを取得する
p a|grep '10.0.0'|awk '{print $2}'|awk -F/ '{print $1}'
か、ifconfig eth0|grep '10.0.0'|awk '{print $2}'
- ip a の結果から IP アドレスを抽出します。
ip a|awk -F "[ /]+" 'NR==9{print $3}'
- stat /etc/hosts の 0644 を取り出します。
stat /etc/hosts|awk -F "[(/]" 'NR==4{print $2}'
- ip a または ifconfig の結果から IP アドレスを取得する
-
準備する
[root@oldboyedu ~] seq 5 >oldboy.txt [root@oldboyedu ~] cat oldboy.txt 1 2 3 4 5
-
漕ぎ練習
- 2 行目を取り出します。
awk NR==2 oldboy.txt
- 2 ~ 4 行目を取る:
awk NR==2,NR==4 oldboy.txt
またはawk 'NR>1&&NR<5' oldboy.txt
awk 'NR>=2&&NR<=4' oldboy.txt
- 2 行目を取り出します。