0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linux AWKによる文字列加工

Posted at

標準入力、または、引数で指定されたファイルを読み込み、パターンにマッチした行に対してアクションを実行します。

  1. 基本構文
    awk 'pattern { action }' input_file

AWK標準入力、または、引数で指定されたファイルを読み込み、パターンにマッチした行に対してアクションを実行します。

2.前処理/後処理付きのテキスト処理
awk 'BEGIN { ... } pattern { action } END { ... }' input_file

awk 'BEGIN {テキストを読む前に行う処理} /pattern/ {テキスト1行に対して行う処理} END {テキストを読み終わった後に行う処理}'

BEGINブロックのみとENDブロックは任意ブロックであるため、省略可能、いずれかのみ使うことも可能。

3.特殊変数($0, 1 ...n)

$0: その行の全内容

$1: 1つ目のフィールド(デフォルトの区切り文字はスペース)

$2: 2つ目のフィールド

4.pattern
pattern を省略するとすべての行に対して action を行います。actionを省略するとprint $0の内容をプリントする。

patternの形は普通の条件式と正規表現の2種類があります。正規表現の場合は「//」で囲む。
正規表現を使う場合のオペレーター:
~ : あるパターンにマッチする
!~ : あるパターンにマッチしない

5.使用例:
cat hoge.txt | awk '$1 ~ /^ab/ {print $2}'
意味:hoge.txtの全行に対して、1フィールド目の頭がabの行のみ2桁目をプリントする

cat hoge.txt | awk '$1 !~ /^ab/ {print $2}'
意味:hoge.txtの全行に対して、1フィールド目の頭がabでない行のみ2桁目をプリントする

cat hoge.txt | awk '$1 == "ab" {print $2}'
意味:hoge.txtの全行に対して、1フィールド目がabの行のみ2桁目をプリントする

cat hoge.txt | awk -f 1.awk
意味:awkのコードを記述したファイルを利用して、hoge.txtに対して文字列加工を行う。

cat hoge.txt | awk 'BEGIN { print "Hello World"} {print $2}'
意味:一行目を読み込む前にHello Worldを出力してから、全行に対して2つ目のフィールドを出力する。

cat hoge.txt | awk '{print $2} END { print "Thank you"}'
意味:全行に対して2つ目のフィールドを出力してから、Thank youを出力する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?