複数のスペースで区切られている文字列を抜き出す方法 †本記事は、cut,awkコマンドで複数のスペースで区切られた特定の位置の文字列を抜き出す方法について記します。 関連記事 †
使用するテキストデータ(スペースインデント) †以下のようなスペースインデントされたテキストファイルを使用します。 redhat centos fedora debian ubuntu mint windows10 windows8.1 windows7 freebsd netbsd openbsd hp-ux solaris aix awkを使って特定位置の文字列を抜き出す †awkの場合は、スペースが続いていても気にする必要はありません。 cat sp.txt | awk '{ print $2 }' centos ubuntu windows8.1 netbsd solaris print $2 の $2を$1にすれば1番目の文字列を抽出します。 $ cat sp.txt | awk '{ print $3" "$2" "$1 }' fedora centos redhat mint ubuntu debian windows7 windows8.1 windows10 openbsd netbsd freebsd aix solaris hp-ux cutを使って特定位置の文字列を抜き出す †文字列と文字列の区切りにスペースが複数あるので、連続するスペースを1つのスペースにするため、 $ cat sp.txt | tr -s ' ' ' ' | cut -d" " -f 2 centos ubuntu windows8.1 netbsd solaris trの-sオプションがわかりづらいと思いますので、以下のようにしても実現できます。
上記の通り、trとcutを組み合わせることにより、連続するスペースを一つのスペースにしたり、 tabの場合 †redhat centos fedora debian ubuntu mint windows10 windows8.1 windows7 freebsd netbsd openbsd hp-ux solaris aix tabの場合は、以下のようにすればcutで実現できます。 $ cat tab.txt | tr -s '\t' ',' redhat,centos,fedora debian,ubuntu,mint windows10,windows8.1,windows7 freebsd,netbsd,openbsd hp-ux,solaris,aix $ cat tab.txt | tr -s '\t' ',' | cut -d, -f2 centos ubuntu windows8.1 netbsd solaris スペースとtabの混在 †スペースとtabの混在は以下のようにして連続するスペースまたはtabを1つの文字に置換します。 $ cat sptab.txt | tr -s '\t' ' ' | tr -s ' ' ',' redhat,centos,fedora debian,ubuntu,mint windows10,windows8.1,windows7 freebsd,netbsd,openbsd hp-ux,solaris,aix 上記のような出力になれば、あとは、上述のようにcutを使えば指定した文字列を抽出することができます。 cat sptab.txt | awk '{ print $2 }' centos ubuntu windows8.1 netbsd solaris 以上、awkとcutコマンドを使用し複数のスペースで区切られている文字列を抜き出すコマンド実行例の紹介でした。 |