- 締切済み
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や他の場合もある)でうまく文章処理を行いたく質問させていただきました。 ご存知の方、ご教授願います。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- saijyo_739
- ベストアンサー率53% (119/222)
質問したい事が今一つわかりませんが。 % 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 的にも可能かと思いますよ。
- trapezium
- ベストアンサー率62% (276/442)
> 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 オプションで渡すのも一つの方法。
お礼
ありがとうございました。 awkとsedを組み合わせればできると思いましたが 無理なことがわかりました。 勉強になりました。
- Tacosan
- ベストアンサー率23% (3656/15482)
何をどう考えて 「sed "s/A/{print $1}/g" test1.txt > test2.txt としよう」 と思ったのですか? その「number150」とやらはどこからでてきたの?
お礼
ありがとうございました。 他でも試しに行ってみます。 $1の扱い方が難しいと感じました。