連続した空白のフィールドを awk ,cut で切り出す

連続した空白(スペース)で区切られたフィールドを取り出す(awk ,cut)

ログなどで設定ファイルで空白で区切られている場合、cutコマンドで「cut -d ” ” -f3」とかで取り出せますが、連続した空白の場合は正しく取り出せません

これを取り出す方法を紹介します

awkコマンドで連続した空白(スペース)で区切られたフィールドを取り出す

awkコマンドで連続した空白で区切られているフィールドを取り出すのは簡単で「cat (ファイル) | awk ‘{print $3}’」とかで3つ目の区切られているフィールドを取り出せます。awkコマンドでは連続した空白は一つの区切りとして扱われます

書式:cat (ファイル) | awk ‘{print $(取り出すフィールドの場所)}
例: $ cat /var/tmp/test.txt | awk ‘{print $2}’
/var/tmp/test.txtのスペース区切りの2つ目を取得しています

 

プロセスコマンドでも同じように連続した空白で区切れています。
下記ではapacheが使用しているプロセスIDを取得しています

cutコマンドで連続した空白(スペース)で区切られたフィールドを取り出す

cutコマンドで連続した空白で区切られているフィールドを取り出すのは難しいので、連続した空白を一つのタブに変換後してから切り出します。
下記では「sed ‘s/[\t ]\+/\t/g’」で連続した空白を一個のタブに変換してからcutコマンドで切り出しています

プロセスコマンドでも同様に一度タブに変換してからだと正しく連続した空白でも取り出せます

 

スポンサーリンク