以下のcsvファイルがあるとします。


1,111,aaa,山
2,222,bbb__,川
3,333,ccc,海

ここからawkで

aaa
bbb
ccc

bbb__のアンダーバーを取り除いて上のように抽出する方法をお教え願えませんでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/01/09 10:32:29
  • 終了:2008/01/09 11:16:07

回答(1件)

id:dev_zer0 No.1

dev_zer0回答回数332ベストアンサー獲得回数252008/01/09 11:02:43

ポイント100pt

http://www.linux.or.jp/JM/html/GNU_gawk/man1/gawk.1.html

無理矢理awkだけで行うと以下のようになります。

awk 'BEGIN { FS=","}{str = $3; gsub(/_/, "", str); print str}'

デフォルトのフィールドセパレータは空白なのでカンマにし、

3番目のデータを変数strに入れて、組み込み関数gsub()で"_"を削除します

# sub()は最初に一致した文字しか置換しません


でも普通はsedと組み合わせて使います

awk 'BEGIN { FS=","}{ print $3 }' | sed 's/_//g'

上記のコマンドも同様の出力結果が得られます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません