2
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?

More than 3 years have passed since last update.

awkで空白が含まれる任意のフィールドを抽出する方法

Last updated at Posted at 2018-11-11

awkにおける空白やタブの扱いと問題

  • awkでは連続する空白やタブは1つのフィールドとして扱われる。
  • 本来なんの問題もなく、これによりデータが扱いやすいのだが、空白が含まれるフィールドをそのまま抽出しようとした際にハマったのでメモ。
  • 具体的には、以下のようなデータについて、空白フィールドが含まれる列を指定して抽出すると、空白フォールドの次のフィールドのデータが出力され、空白をそのまま出すことはできない。
$ cat aaa.txt
aaa bbb ccc
ddd     fff
ggg hhh iii

$ cat aaa.txt | awk '{print $2}'
$ bbb
  fff
  hhh

解決策

  • 一度タブを他の文字に変換して、デリミタとして指定する方法がある。
$ cat aaa.txt
aaa bbb ccc
ddd     fff
ggg hhh iii

$ cat aaa.txt | tr "¥t" "," | awk -F ',' {print $2}
$ bbb
     
  hhh

もっと良い解決策あるはず

上記はまあ、スマートではない。
ググってもいい方法全然でてこないので、そもそもawkの使い方として間違ってるのかも。。
備忘録として。

参考

AWKのこういう時はどう書く?(本稿には活かされてないのですが、awkで悩むかゆいところに手が届くめちゃめちゃ参考になった)
awkコマンドの基本

2
0
2

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
2
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?