Como sempre no Unix, existem opções.
paste
Use o utilitário paste
com um arquivo LHS em branco, por exemplo:
cat ~/.bashrc | paste /dev/null -
O comando cat
é um marcador para seu segundo script.
O comando paste
foi projetado para pegar dois arquivos e colocá-los juntos, por exemplo:
$ paste file1 file2
file 1 line 1 <TAB> file 2 line 1
file 1 line two <TAB> file 2 line 2
file 1 line 3 <TAB> file 2 line iii
A maneira que estou usando é usar /dev/null
como file1
e STDIN
como file2
, especificado por -
. Quando usado como entrada, /dev/null
retorna caracteres NULL. Isso significa que cada linha de file2
, a saída de seu segundo script, é precedida por NULL seguido por um caractere TAB.
Você pode ir além: paste
tem uma opção --delimiter
, mas a especificação de dois espaços não fornece o efeito esperado: delimitador 1 é usado entre a primeira e a segunda coluna, delimitador 2 é usado entre o segundo e terceiro, e assim por diante.
paste|expand
Para obter um recuo de dois espaços, você usaria a planície paste
canalizada novamente por meio de expand -2
: isso transforma todas as guias em dois espaços:
cat ~/.bashrc | paste /dev/null - | expand -2
Isso se comportará exatamente como você especificou.
sed
ou awk
No entanto, outra abordagem é usar sed
ou awk
:
cat ~/.bashrc | sed 's/^/ /'
Isso procura o início da linha (" ^
") e substitui ou realmente insere um par de espaços.
cat ~/.bashrc | awk '{printf " %s\n",$0}'
Isso pega cada linha completa (" $0
") e formata com printf
, usando o especificador de formato de dois espaços, seguido pela string a ser impressa, seguido por uma nova linha.