sedを使用して名前にスペースを含むファイルの行を編集する

sedを使用して名前にスペースを含むファイルの行を編集する

フォルダーを繰り返しながら、フォルダー内の同じ名前のファイルを開き、いくつかの操作を実行しています。

私は行を操作するためにsedを使用しています。

sed "1s/Log R Ratio/$SAMPLE.LRR/" $FILE

ここで $FILE は、名前に複数のスペースがあるファイルです。例:

NAT062813_Batch A_1_TR27GD1_CytoScanHD_NL_092913/NAT062813_Batch A_1_TR27GD1_CytoScanHD_NL_092913.txt 

このファイルでsedを使用する方法はありますか(ループや名前を変更せずに)? $ FILEの周りに引用符を入れようとしましたが、印刷されます。

ベストアンサー1

あなたの質問をもう一度読んだら、私は逃したようです-isedこのオプションは、sed結果を標準出力に印刷するのではなく、ファイルを編集します。

とても良い考えですので参考にしてくださいテストsed注文今後-i間違った場合は、「元に戻す」コマンドがないため、スイッチを使用してください。

たとえば、実行すると、端末にsed 's/old/new/' myfileこの内容が印刷されることがわかり、各行の最初のインスタンスはに置き換えられます。実行すると、印刷された内容は何も表示されません。その場所で(元に戻せないように)編集されます。myfileoldnewsed -i 's/old/new/' myfilemyfile

-i.bakたとえば、代わりに使用することもできます-i。これにより、元のファイルがとして保存され、myfile.bak編集されたファイルがとして表示されますmyfile。 (必要な拡張子を定義できます。ドットで.bak始める必要はありませんが、.bakこの目的によく使用されます。)

スペースを含むファイル名の周りの引用符は別の問題であり、答えは簡単です。単語を分離せずに変数拡張を取得するには、二重引用符を使用します。したがって、変数がある場合は、filenamevariable="My file name which contains spaces"次のように参照する必要があります。sed 's/old/new/' "$filenamevariable"

その他のおすすめ本:

おすすめ記事