アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (3件)

こんばんは。


フィールドのスプリットは awk 自身に任せると簡単です。
-F で入力行のフィールド区切り文字を設定できます。
(デフォルトはスペース) お試しあれ。

% echo "xxx,yyyyy,zz" | awk -F, '{print $2}'

また、スクリプトの「BEGIN{}」の中で変数 FS(< Field Separator)
に値をセットしても構いません。

参考URL:http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manua …
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/02/03 21:20

echo "xxx,yyyyy,zz" | perl -a -F/,/ -ne 'print $F[1],"\n"'


でできます。「awk限定」ということでしたらすいません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/02/03 21:19

抽出条件が「,区切り文字列の2番目」でよいのならsplit()で切り出せばよいでしょう。



split(str, arr, del)
strはもとの文字列。
arrは結果が入る配列。
delが区切り文字。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/02/03 21:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!