(O+P)ut

ITエンジニアのアウトプット録



(O+P)ut

OutPut Log by SE

【awk】文字列の長さで表示対象を絞る

スポンサーリンク

f:id:mtiit:20190212154649p:plain

コマンド

(例)文字数が20字未満の行のみ出力

 awk ' {if(length($0) < 20) print $0 }'

以下、補足です

補足

awkに内蔵されているlength関数を用います。

pwgen X 1 でX桁の文字列を生成できますので
3行のテキストを以下のように用意します。

$ pwgen 10 1 > test.txt
$ pwgen 15 1 >> test.txt
$ pwgen 20 1 >> test.txt

作成したテキストファイルに対して冒頭のコマンドで表示させてみます。

$ cat test.txt |  awk  ' {if(length($0) < 20) print $0 }'
veethaevuo
hooriemohthuege

$ cat test.txt |  awk  ' {if(length($0) <= 20) print $0 }'
veethaevuo
hooriemohthuege
keechaeghoaniefohxai

成功しました。

ちなみに、このlength関数は文字列の切り出しでよく使われます。

例えば、上記の文字列の最後の3文字だけを切り出す場合、
substr(対象文字列,切り出し箇所場所,切り出す文字数)を用いて

$ cat test.csv | awk '{ print substr($0,length($0)-2,3) }'
vuo
ege
xai

といった具合です。

以上、ご参考ください。