• ベストアンサー

awk等で特定文字列の抜き出し

次のような文字列から特定の文字を抽出したいです。 「xxx,yyyyy,zz」 で、yyyyの部分のみをコマンドラインから抽出したいのですがどのようにしたらよいでしょうか? ためしに自分で考えたコマンドは以下の通りです。 % echo "xxx,yyyyy,zz" | awk '{print substr($0, 1, index($0, ","))}' で行うと最初の「,」でなりxしか抽出できません。 すみませんが、いい方法がありましたら教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.2

こんばんは。 フィールドのスプリットは awk 自身に任せると簡単です。 -F で入力行のフィールド区切り文字を設定できます。 (デフォルトはスペース) お試しあれ。 % echo "xxx,yyyyy,zz" | awk -F, '{print $2}' また、スクリプトの「BEGIN{}」の中で変数 FS(< Field Separator) に値をセットしても構いません。

参考URL:
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/awk/,http://cl.aist-nara.ac.jp/~daiti-m/etc/awk/
doh
質問者

お礼

awkでもこんなに簡単に出来たんですね。 勉強不足でした。 さらに参考HPまで教えて頂きありがとうございます。 これでひとつスキルアップが出来ました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#5910
noname#5910
回答No.3

echo "xxx,yyyyy,zz" | perl -a -F/,/ -ne 'print $F[1],"\n"' でできます。「awk限定」ということでしたらすいません。

doh
質問者

お礼

回答ありがとうございます awk限定ではありません。 UNIX系のコマンドはいろいろなことが出来るのでひとつの結果に対していろいろな回答があります。 Perlを使ったコマンドでも出来ることがわかりまたひとつ賢くなりました。 ありがとうございます。

すると、全ての回答が全文表示されます。
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.1

抽出条件が「,区切り文字列の2番目」でよいのならsplit()で切り出せばよいでしょう。 split(str, arr, del) strはもとの文字列。 arrは結果が入る配列。 delが区切り文字。

doh
質問者

お礼

splitコマンドの存在を初めて知りました。 これでやっと抽出することが出来ました。ありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A