• 締切済み

UNIX系の文章処理についてのご質問

UNIX系での文章処理方法について、ご教授願います number150=Test(A,B); が記述されているテキストファイルtest1.txtを number150 =Test(number150_1,number150_2); と出力(test2.txt)をさせたいのですが、 sed "s/A/{print $1}/g" test1.txt > test2.txt というふうにしてみましたが、うまくいきませんでした。awkも参考にトライしてみましたが失敗しました。 ちなみに s/A/number150/gと直接指定しない(number150は一例でnumber200や他の場合もある)でうまく文章処理を行いたく質問させていただきました。 ご存知の方、ご教授願います。

みんなの回答

回答No.3

質問したい事が今一つわかりませんが。 % echo 'number150=Test(A,B);' | sed -e 's/A/number150_1/' -e 's/B/number150_2/' number150=Test(number150_1,number150_2); こんな感じで参考になるでしょうか。 $1がシェルスクリプト内の位置パラメータとして渡ってきた値などだったら sed -e "s/A/$1/" -e "s/B/$2/" test1.txt > test2.txt 的にも可能かと思いますよ。

guten2morgen
質問者

お礼

ありがとうございました。 他でも試しに行ってみます。 $1の扱い方が難しいと感じました。

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

> sed "s/A/{print $1}/g" test1.txt > test2.txt {print $1} って awk と混ざってますがな。 一般的に sh の変数をコマンドラインに入れたいなら a="number150_1" b="number150_2" sed -e "s/A/$a/g" -e "s/B/$b/" test1.txt > test2.txt $1 なら $a とかの部分置き換えればいい。もちろん置き換える文字によって色々問題は有り得る。 awk なら -v オプションで渡すのも一つの方法。

guten2morgen
質問者

お礼

ありがとうございました。 awkとsedを組み合わせればできると思いましたが 無理なことがわかりました。 勉強になりました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

何をどう考えて 「sed "s/A/{print $1}/g" test1.txt > test2.txt としよう」 と思ったのですか? その「number150」とやらはどこからでてきたの?

関連するQ&A