awk
awk '{printf " %s\n",$0}' file-in.txt > file-out.txt
sed
sed -e 's/^/ /' file-in.txt > file-out.txt
sed (mesmo arquivo)
sed -i -s 's/^/ /' file.txt
Eu tenho um script bash que tem uma variável sendo definida a partir da saída de cat e grep:
result='cat $file | grep -A2 "$search"'
o resultado contém 3 linhas E.G .:
This is Line 1
This is line 2
This is line 3
Preciso prefixar cada linha com um espaço:
This is Line 1
This is line 2
This is line 3
Eu tentei o seguinte:
result='echo $result | awk '{print " "$0}''
e alguns comandos sed diferentes, todos os quais resultam nisso:
This is Line 1 This is line 2 This is line 3
eles adicionam os espaços, mas excluem as novas linhas
Nota: isso será salvo em um arquivo que precisa das quebras de linha
awk
awk '{printf " %s\n",$0}' file-in.txt > file-out.txt
sed
sed -e 's/^/ /' file-in.txt > file-out.txt
sed (mesmo arquivo)
sed -i -s 's/^/ /' file.txt
Use awk
no primeiro início, em vez de usar grep
e pare de processar extra em $result
(esse é um tipo de simulação grep
-A Num
).
result=$(awk -v patt="$search" '$0 ~ patt{S=1}
S && ($0 ~ patt || ++n<3) {print " "$0} n==3{n=0}' infile)
Em seguida, imprima / salve o $result
em um arquivo de saída:
printf '%s\n' "$result" > outfile
Tags text-processing