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

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や他の場合もある)でうまく文章処理を行いたく質問させていただきました。

ご存知の方、ご教授願います。

A 回答 (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

的にも可能かと思いますよ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/03/04 00:42

> 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 オプションで渡すのも一つの方法。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/03/04 00:45

何をどう考えて


「sed "s/A/{print $1}/g" test1.txt > test2.txt としよう」
と思ったのですか?

その「number150」とやらはどこからでてきたの?
    • good
    • 0

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