как заменить определенное содержимое файла первой строкой другого файла?

как заменить определенное содержимое файла первой строкой другого файла?

У меня есть два файла: one.txtиsample.txt

one.txtимеет следующее содержание:

AAAA
BBBB
CCCC
DDDD

sample.txtимеет определенное содержание, например следующее:

>>XXXXXXX<<

как я могу:

  1. замените «XXXXXXX» содержимым первой строки one.txt?
  2. удалить первую строку one.txt?
  3. переименовать one.txtв AAAA.txt?

в командной строке Linux?

введите описание изображения здесь

решение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. Если в строке может быть больше одного, то команда выше заменит только первое в каждой строке. Чтобы заменить их все, используйте это:

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

В вашем исходном вопросе в конце каждой строки в one.txt. Если это так с вашим реальным файлом и вам нужно удалить пробелы перед добавлением в sample.txt, используйте это:

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

Затем те же команды, что и выше.

Связанный контент