linux - sustituir - En Bash, ¿cómo agrego una cadena después de cada línea en un archivo?
sed reemplazar/ (4)
Prefiero usar awk
. Si solo hay una columna, use $0
, de lo contrario reemplácela con la última columna.
De una sola mano,
awk ''{print $0, "string to append after each line"}'' file > new_file
o esto,
awk ''$0=$0"string to append after each line"'' file > new_file
¿Cómo agrego una cadena después de cada línea en un archivo usando bash? ¿Se puede hacer utilizando el comando sed? Si es así, ¿cómo?
Sed es un poco feo, podrías hacerlo elegantemente así:
hendry@i7 tmp$ cat foo
bar
candy
car
hendry@i7 tmp$ for i in `cat foo`; do echo ${i}bar; done
barbar
candybar
carbar
Si lo tiene, la utilidad lam (laminate) puede hacerlo, por ejemplo:
$ lam filename -s "string after each line"
Si su sed
permite la edición en el lugar mediante el parámetro -i
:
sed -e ''s/$/string after each line/'' -i filename
Si no, debes crear un archivo temporal:
typeset TMP_FILE=$( mktemp )
touch "${TMP_FILE}"
cp -p filename "${TMP_FILE}"
sed -e ''s/$/string after each line/'' "${TMP_FILE}" > filename