Redireciona a saída de menos utilidade para um arquivo

1

Aqui está o que eu fiz

less -N file1 > file2

o que eu quero é escrever file1 no arquivo2 com a opção de números de linha.

Mas eu falhei com isso.

Alguma sugestão para fazer isso? Por que eu não fiz isso?

Obrigado.

    
por ISlimani 19.07.2015 / 19:22

2 respostas

7

less é a ferramenta errada para o trabalho.

Você pode usar cat para isso:

cat -n file1 >file2

Ou nl :

nl -ba file1 >file2

Ou pr :

pr -n -t -T file1 >file2

Ou sed :

sed '/./=' file1 | sed '/./N; s/\n/\t/' >file2

Ou grep :

grep -n . file1 | sed 's/:/\t/' >file2

Ou awk :

awk '{ $0 = NR "\t" $0 } 1' file1 >file2

Ou novamente awk :

awk '{ sub(/^/, NR "\t") } 1' file1 >file2

Ou perl :

perl -pe '$_=$.."\t".$_' file1 >file2

Ou novamente perl :

perl -pe 's/^/$.\t/' file1 >file2

Ou seq e paste :

seq $(wc -l file1 | cut -d' ' -f1) | paste - file1 >file2

Ou até mesmo um script de shell simples:

count=0
while IFS= read -r line; do
    let count++
    printf '%d\t%s\n' $count "$line"
done <file1 >file2

Mas less é a ferramenta errada. :)

    
por 19.07.2015 / 20:14
0

Na primeira tentativa (você terá que cavar seu código-fonte para confirmação) less é uma ferramenta de interface do usuário: ele altera o comportamento do terminal. Você pode ver less como um shell leve (ele possui comandos internos, como / para pesquisa). O que você vê não pode ser redirecionado. Literalmente: tem saída não [padrão].

A ferramenta adequada para o trabalho que você precisa é nl , como jimmij sugerido.

    
por 19.07.2015 / 20:16