awk で区切り文字を指定する方法、複数指定する方法も解説
目次
スポンサードリンク
awk の基本構文
awk をワンライナーで実行する場合の基本構文は以下の通りです。 引数で指定したファイル、または、標準入力で指定したデータを対象とし、パターンにマッチした行に対し、処理を実行します。パターンは省略でき省略時は全ての行が対象になります。
awk パターン { 処理 } ファイルパス
コマンド | awk パターン { 処理 }
使用するサンプルデータ
サンプルで使用するデータは、以下のように数値がカンマとコロン、2種類の区切り文字で区切られて並んでいます。
[root@hostname tmp]# cat data
1,2:3,4:5
10,20:30,40:50
-10,-20:-30,-40:50
区切り文字を指定する方法
区切り文字はセパレータやデリミタと呼ばれることもあります。各列(フィールド)を区切る役割を持つ文字です。
awk には区切り文字を指定する -F オプションがあります。区切り文字を指定しない場合は半角スペースがデフォルトの区切り文字になります。 以下例は区切り文字をカンマに変更しています。
[root@hostname tmp]# cat data | awk -F',' '{ print $2}'
2:3
20:30
-20:-30
例では、print $2 で2列目のフィールドを出力しています。区切り文字がカンマなので、コロンより後ろも2列目として扱われています。
複数の区切り文字を指定する方法
以下の例は区切り文字として、カンマとコロンの2種類を指定しています。−Fオプションを指定する際に角括弧[]で囲むと複数の区切り文字を指定することができます。
[root@hostname tmp]# cat data | awk -F'[,:]' '{ print $2}'
2
20
-20
最初の例とは異なり、コロンより後ろは別のフィールドとして扱われています。
プログラミング言語AWK
AWK 言語作者による解説本。名著。
リンク
Linuxコマンドについて学べるおすすめ書籍
Linuxコマンドの知識は、プログラマにとって長く役立つ知識です。 私はこちらの書籍で一通り知識を抑えました。基本から丁寧に解説されています。
リンク
関連記事
Search
Recent Posts
- Apacheの起動状態をチェックして停止してる場合にApacheを起動するシェルスクリプト
- Amazon LinuxのOSバージョンを調べる方法|/etc/redhat-release の代替ファイル
- MYSQLでダンプファイルを取得する際に発生したエラー「Couldn't execute 'SELECT BINLOG_GTID_POS('', '0')': You are not using binary logging (1381)」の原因と対処方法
- RHEL系Linuxでリポジトリを一覧表示するコマンド(dnf repolist)
- .php以外の拡張子でPHPを動作させようとして発生したエラー「Got error 'Access to the script '/var/www/html/php.html' has been denied (see security.limit_extensions)'」の原因と対処方法