39

本当に簡単な質問です。シェルでechoとcatを組み合わせるにはどうすればよいですか。ファイルの内容を、文字列を付加して別のファイルに書き込もうとしていますか?

/ tmp / fileが次のようになっている場合:

this is a test

これを実行したい:

echo "PREPENDED STRING"
cat /tmp/file | sed 's/test/test2/g' > /tmp/result 

/ tmp/resultは次のようになります。

PREPENDED STRINGthis is a test2

ありがとう。

4

6 に答える 6

45

これは機能するはずです:

echo "PREPENDED STRING" | cat - /tmp/file | sed 's/test/test2/g' > /tmp/result 
于 2010-06-09T11:47:00.413 に答える
11

試す:

(printf "%s" "PREPENDED STRING"; sed 's/test/test2/g' /tmp/file) >/tmp/result

括弧はサブシェル内でコマンドを実行するため、出力は>/tmp/resultリダイレクト用の単一のストリームのように見えます。

于 2010-06-09T11:47:20.740 に答える
2

または、sedのみを使用します

  sed -e 's/test/test2/g
s/^/PREPEND STRING/' /tmp/file > /tmp/result
于 2010-06-09T11:55:04.217 に答える
1

またはまた:

{ echo "PREPENDED STRING" ; cat /tmp/file | sed 's/test/test2/g' } > /tmp/result
于 2010-06-09T13:12:05.043 に答える
0

別のオプション: 先頭に追加された文字列は、すべての行ではなく 1 回だけ表示されると仮定します。

gawk 'BEGIN {printf("%s","PREPEND STRING")} {gsub(/test/, "&2")} 1' in > out
于 2010-06-09T13:50:51.907 に答える