
Tengo dos archivos: one.txt
ysample.txt
one.txt
tiene los siguientes contenidos:
AAAA
BBBB
CCCC
DDDD
sample.txt
tiene algunos contenidos específicos como los siguientes:
>>XXXXXXX<<
Cómo puedo:
- reemplace "XXXXXXX" con el contenido de la primera línea de
one.txt
? - eliminar la primera línea del
one.txt
? - cambiar el nombre
one.txt
aAAAA.txt
?
en la línea de comando de Linux?
Respuesta1
Aquí hay una forma:
## 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
Tenga en cuenta que esto supone que solo hay una aparición de >>XXXXXX<<
en cualquier línea de sample.txt
. Si puede haber más de uno por línea, entonces el comando anterior solo reemplazará el primero en cada línea. Para reemplazarlos todos, use esto en su lugar:
sed "s/>>XXXXXXX<</>>$string<</g" sample.txt > $string.txt
Su pregunta original tenía espacios al final de cada línea one.txt
. Si este es el caso de su archivo real y necesita eliminar los espacios antes de agregarlo sample.txt
, use esto:
string=$(head -n1 one.txt | sed 's/ *$//')
Luego los mismos comandos que arriba.