件名:1sed
から読むと仮定すると、出力はテキストファイルになりますか?明らかに、同じシェル演算子を使用したり、そのようなツールを使用して出力をテキストファイルに保存したりするのではありません。ここでの質問は次のとおりです。STDIN
sed
>
>>
tee
sed
ホロ出力をテキストファイル形式で作成できますか?では、どのような状況で製作されますか?
1: これは、これをサポートする実装を使用してテキストファイルを内部で編集することを排除するためのものです。
ベストアンサー1
はい、w
コマンドを使用するか、コマンドw
のすべてのフラグをs
使用してください。POSIXで指定。
例えば、
sed -n 'w output.txt'
標準入力に入力されたすべての内容sed
はに記録されますが、標準出力output.txt
には何も出力されません(このオプションのsed
おかげで)。-n
これは、パターン空間を書き込む前に、パターン空間で動作するために他のコマンドと共に使用することができる。
いくつかの警告と提案:
ファイル名が空白で始まる場合は、プレフィックスを使用してください./
。
sed -n 'w ./ output with blanks.txt'
sed
ファイル名に改行文字POSIXlyが含まれている場合は、バックスラッシュでエスケープできます。ただし、すべての実装で動作するわけではありません(特にGNUsed
またはbusyboxでは動作しませんsed
)。
sed -n 'w ./output\
with\
newline.txt'
バックスラッシュ文字が含まれている場合、一部の実装では(上記のPOSIXはファイル名の改行をサポートしています)、バックスラッシュを使用してエスケープする必要があります。
sed -n 'w file\\with\\backslash.txt' # POSIX
sed -n 'w file\with\backslash.txt' # GNU
また、入力が空であってもコマンドがw
実行されなくても、出力ファイルは次のように生成または切り捨てられます。
sed 'd;w file'
または
seq 20 | sed '/21/ w file'
awk
これらの問題を回避するために代わりに使用できます。
FILE=arbitrary-file-name awk '/100/ {print > ENVIRON["FILE"]}'