【Linux】awkコマンドの簡単な使い方

導入

awk は、GNU プロジェクトによって開発された強力なテキスト処理ツールです。これは主に、入力 (通常はテキスト ファイル) を読み取り、特定の条件に従って各行を照合し、一致した行に対して指定された操作を実行するために使用されます。

基本的な使い方

awk基本的な使い方は以下の通りです。

# 格式
$ awk 动作 文件名

# 示例
$ awk '{print $0}' demo.txt

上記の例では、処理対象となるのはテキスト ファイルdemo.txtです。awk前の単一引用符の内側には中括弧があり、各行の処理アクションが含まれていますprint $0この中には現在行を表すprintprintコマンドがあるので$0、上記コマンドの実行結果は各行をそのまま印刷することになります。

次に、最初に標準入力 (stdin) を使用して上記の例を示します。

$ echo 'this is a test' | awk '{print $0}'
this is a test

上記のコードでは、print $0標準入力がthis is a test再印刷されます。

awk各行はスペースとタブに基づいて複数のフィールドに分割され、 、 を使用して最初$1フィールド、2 番目のフィールド、3 番目のフィールドなどを表します。$2$3

$ echo 'this is a test' | awk '{print $3}'
a

上記のコードでは、は3 番目のフィールド$3を表しますthis is a testa

以下では、例として、/etc/passwdファイルを として保存しますdemo.txt

root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

このファイルのフィールド区切り文字はコロン ( ) であるため、パラメータを:使用して区切り文字をコロンとして指定する必要があります。-F次に、その最初のフィールドを抽出できます。

$ awk -F ':' '{ print $1 }' demo.txt
root
daemon
bin
sys
sync

変数

$ + フィールドを表す数値に加えて、awk他の変数も多数提供されます。
この変数はNF現在の行にフィールドがいくつあるかを示すため、$NF最後のフィールドを表します。

$ echo 'this is a test' | awk '{print $NF}'
test

$(NF-1)最後から 2 番目のフィールドを表します。

$ awk -F ':' '{print $1, $(NF-1)}' demo.txt
root /root
daemon /usr/sbin
bin /bin
sys /dev
sync /bin

上記のコードでは、printコマンド内のカンマは、出力時に 2 つの部分を区切るためにスペースが使用されることを意味します。

変数は、NR現在処理されている行を示します。

$ awk -F ':' '{print NR ") " $1}' demo.txt
1) root
2) daemon
3) bin
4) sys
5) sync

上記コードにおいて、printコマンド内で文字をそのまま出力する場合はダブルクォートで囲む必要があります。

awkその他の組み込み変数は以下の通りです。

FILENAME:当前文件名
FS:字段分隔符,默认是空格和制表符。
RS:行分隔符,用于分割每一行,默认是换行符。
OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
OFMT:数字输出的格式,默认为%.6g。

おすすめ

転載: blog.csdn.net/u011308433/article/details/132902948