あるファイルの特定の内容を別のファイルの最初の行に置き換えるには?

あるファイルの特定の内容を別のファイルの最初の行に置き換えるには?

2つのファイルがありますone.txtsample.txt

one.txt以下の内容があります。

AAAA
BBBB
CCCC
DDDD

sample.txt具体的な内容は次のとおりです。

>>XXXXXXX<<

私がすることができます:

  1. one.txt「XXXXXXX」を?に置き換えます。最初の行
  2. one.txt? の最初の行を削除します。
  3. one.txt名前を次に変更しますかAAAA.txt

Linuxのコマンドラインから?

ここに画像の説明を入力してください。

ベストアンサー1

1つの方法は次のとおりです。

## save the first line of one.txt in the variable $string
string=$(head -n1 one.txt)
## delete the first line of one.txt
sed -i '1d' one.txt
## replace the Xs in `>>XXXXX<<` with the contents of `$string` 
## and save as the new file "$string.txt" (AAAA.txt)
sed "s/>>XXXXXXX<</>>$string<</" sample.txt > $string.txt

>>XXXXXX<<これは、すべての行で一度だけ発生すると仮定しますsample.txt。 1行に複数の行がある場合、上記のコマンドは各行の最初のコマンドのみを置き換えます。これらすべてを置き換えるには、次のコマンドを使用します。

sed "s/>>XXXXXXX<</>>$string<</g" sample.txt > $string.txt

元の質問には各行の末尾にスペースがありますone.txt。物理ファイルの場合に追加する前にスペースを削除する必要がある場合は、次のようにsample.txtします。

string=$(head -n1 one.txt | sed 's/ *$//')

次に、上記と同じコマンドを実行します。

おすすめ記事