
У меня есть два файла: one.txt
иsample.txt
one.txt
имеет следующее содержание:
AAAA
BBBB
CCCC
DDDD
sample.txt
имеет определенное содержание, например следующее:
>>XXXXXXX<<
как я могу:
- замените «XXXXXXX» содержимым первой строки
one.txt
? - удалить первую строку
one.txt
? - переименовать
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/ *$//')
Затем те же команды, что и выше.