awkで行から数字のみを抜き出す
Pocket

そういう処理について見かけたので、念のため残しておく。
awkで行に含まれる数字のみを抜き出すには、区切り文字として数字以外を指定して、各列を取得してやることで実現できる。

例えば、ファイルの各行に含まれている数字を1行づつ抽出する場合、以下のようにコマンドを実行する。

awk -F '[^0-9]+' '{for(i=1;i<=NF;i++){if($i!="")print $i}}' test1.txt
[root@BS-PUB-CENT7-01 ~]# cat test1.txt
111AAA222BBB333
CCC444DDD555EEE
666FFF777GGG888
[root@BS-PUB-CENT7-01 ~]# awk -F '[^0-9]+' '{for(i=1;i<=NF;i++){if($i!="")print $i}}' test1.txt
111
222
333
444
555
666
777
888
Sponsored Links

基本はこちらで良いと思うが、もし同じ行で数字だけを抽出するような処理をする場合、以下のように記述することもできる。

awk -F '[^0-9]+' 'BEGIN{OFS=""}{$1=$1;print $0}' test1.txt
[root@BS-PUB-CENT7-01 ~]# cat test1.txt
111AAA222BBB333
CCC444DDD555EEE
666FFF777GGG888
[root@BS-PUB-CENT7-01 ~]# awk -F '[^0-9]+' 'BEGIN{OFS=""}{$1=$1;print $0}' test1.txt
111222333
444555
666777888
[root@BS-PUB-CENT7-01 ~]# awk -F '[^0-9]+' 'BEGIN{OFS=","}{$1=$1;print $0}' test1.txt
111,222,333
,444,555,
666,777,888

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*