簡単に説明すると、awk は grep 検索や sed 編集と比較して、データを分析してレポートを生成する場合に特に強力なテキスト分析ツールです。これは、Linux をプレイするために必要な基本スキルです。彼の人生経験を詳しく理解するには、自分で検索してください。ツールの知識について、著者はそれぞれの知識ポイントを簡単に説明し、例を示します。
簡単に言うと、awk はファイルを 1 行ずつ読み込み、デフォルトの区切り文字としてスペースを使用して各行をスライスし、切り取られた部分に対してさまざまな分析と処理を実行します。
使用法:
awk [options] 'scripts' file1,file2...
awk [options] 'pattern {action}' file1,file2...
options は、awk でサポートされるオプションです (-F -v など)。など; スクリプトは、パターンとアクションを含むその処理スクリプトです (パターンとアクションの関係は、一般に、パターンが有効なフィールドを決定する責任を負い、アクションがそれらのフィールドを処理する責任を負うということです)
1. print の簡単な使用法
簡単なテストを作成する ファイルは次のとおりです:
[root@mos download]# cat Demon.txt
mos ブログへようこそ。
これはテスト ファイルです。
例: 行全体を出力: $0
[root@mos download]# awk '{print $0}' demo.txt
mos ブログへようこそ。
これはテスト ファイルです。
例: 各行の最後のフィールドを出力します: $NF
[root@mos download]# awk ' {print $NF}' Demon.txt
blog.
file.
例: 2 番目のフィールドを出力します: $2
[root@mos download]# awk '{print $2 }' demo.txt
to
is
例: 各行の最後から 2 番目のフィールドを出力し、その後に OK を出力します
[root@mos download]# awk '{print $(NF-1),"OK" }' デモ.txt
mos OK
test OK
例: print linenumber
[root@mos download]# awk '{print NR,$0}' Demon.txt
1 mos ブログへようこそ
2 これはテスト ファイルです。
例: 現在のシステム環境変数の特定の値 (パスなど) を出力します。次の 2 つの出力は同じです
[root@mos download]# awk '{print ENVIRON[" USER"];}' デモ。txt
root
root
[root@mos download]# awk 'BEGIN{print ENVIRON["PATH"];}'
/usr/kerberos/sbin:/usr/ kerberos/bin:/usr/local /sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
追記: 以下のファイルは正常に実行される場合のみ使用できます。 print の BEGIN は実行前に出力可能 データはレポートタイトルやテスト出力として書き込まれることが多いですが、その内容は後述するファイル変更操作に関連する変数を取得できません
例: awk のデフォルトの区切り文字はスペースです。 、一部のテキスト単語は他の文字で表されます。次の 2 つの例は同じです
[root@mos download]# awk -F: {'print $1,$NF'} /etc/passwd|tail -1
mos1 /bin/bash
[root@mos download]# awk -v FS=: '{print $1,$NF}' /etc/passwd|head -1
root /bin/bash
例:出力区切り文字を変更します。特殊文字は次のようにエスケープする必要があります。 例:
[root@mos download]# awk -v OFS= '{print $1,$NF}' Demon.txt
Welcome.blog.
This.file.
[root@mos download]# awk -v OFS="~"'{print $1,$NF}' demo.txt
ようこそ~blog.
This~file.
[root @mos ダウンロード]# awk -v OFS=" '{print $1,$NF}' デモ.txt
ようこそ"ブログ.
この"ファイル.
[root@mos ダウンロード]# awk -v OFS=9 '{print $1,$NF}' デモ.txt
Welcome9blog.
This9file.
[root@mos download]# awk -v OFS=XXXX '{print $1,$NF}' デモ.txt
WelcomeXXXXblog .
ThisXXXXfile.
追記: print 出力フィールドにカンマがない場合、出力セパレータは無効になり、出力結果は直接結合されます。前にリストされているもの: $1~$n、$0、FS、OFS など。以下の図は、awk の組み込み変数テーブルを示しています:
属性の説明
$0 現在のレコード (単一の変数として)
$1~$n 現在のレコードの n 番目のフィールド、フィールドは FS で区切られています
FS デフォルトの入力フィールド区切り文字はスペースです
NF 現在のレコードのフィールド数は列数です
NR 読み取られたレコード数は 1 から始まる行番号です
RS 入力レコード区切り文字デフォルトは改行文字です
OFS 出力 デフォルトのフィールド区切り文字もスペースです
ORS 出力のレコード区切り文字、デフォルトは改行文字です
ARGC コマンドラインパラメータの数
ARGV コマンドラインパラメータ配列
FILENAME 現在の入力ファイルの名前
IGNORECASE true の場合、大文字と小文字を無視したマッチングを実行
ARGIND 現在処理されているファイルの ARGV 識別子
CONVFMT 数値変換形式 %.6g
ENVIRON UNIX 環境変数
ERRNO UNIXシステムエラーメッセージ
FIELDWIDTHS 入力フィールド幅を空白で区切った文字列
FNR 現在のレコード番号
OFMT 数値出力形式 %.6g
RSTART マッチング関数によって一致した最初の文字列
RLENGTH 一致した文字列の長さマッチング機能による
SUBSEP
免責事項: 多くの変数は著者が一般的に使用しないため、ここではすべてをリストしません。
Linux awk コマンドの使用方法の詳細については、PHP 中国語 Web サイトに注目してください。