
Eu quero anexar file2
a file1
. Antes de fazer isso, preciso adicionar um número de linha personalizado ao arquivo file2
.
file1
1 abc
2 bcd
3 efg
file2
mkh
dfd
aad
Adicione o número da linha a
file2
seguirfile1
.4 mkh 5 dfd 6 aad
Anexar
file2
afile1
cat file2 >> file1
Como posso adicionar o número da linha file2
mostrado acima?
Responder1
nl -v "$((1+$(wc -l < file1)))" file2 >> file1
nl
é uma ferramenta paranâmbareuarquivos. A -v
opção fornece o valor inicial dos números de linha. Eu uso um subshell and wc
para obter uma contagem de linhas file1
e adiciono um a ele para obter o número da linha inicial file2
e concateno os resultados no final de file1
.
Observe que isso wc -l file1
imprimiria a contagem de linhas seguida pelo nome do arquivo, mas como redirecionamos wc
o stdin para vir from file1
, a wc
ferramenta em si não sabe nada sobre o nome do arquivo file1
e apenas imprime apenas a contagem de linhas (com alguns espaços em branco que não não importa neste contexto).
Isto pode ser feitoum poucode forma mais limpa apenas usando awk
e nl
:
nl -v $(awk 'END { print NR + 1 }' file1) file2 >> file1
Responder2
Com awk
:
awk -v nl=$(wc -l <f1.txt) '{print NR+nl " " $0}' f2.txt
$(wc -l <f1.txt)
obtém o número de linhas no arquivof1.txt
, estamos passando isso comonl
variável paraawk
print NR+nl " " $0
imprime cada registrof2.txt
com o número de linha correspondente adicionado à variávelnl
, depois um espaço e, em seguida, o registro inteiro
Exemplo:
% cat f1.txt
1 abc
2 bcd
3 efg
% cat f2.txt
mkh
dfd
aad
% awk -v nl=$(wc -l <f1.txt) '{print NR+nl " " $0}' f2.txt
4 mkh
5 dfd
6 aad
Responder3
Outra awk
solução:
$ awk 'NF==1{print ++c" "$1 >> "file1"} NF>1{c=$1}' file1 file2
$ cat file1
1 abc
2 bcd
3 efg
4 mkh
5 dfd
6 aad
Caso genérico:
$ cat file1
1 abc x
2 bcd y
3 efg z
$ cat file2
mkh 1a
dfd foo
aad bar
$ awk 'NR==FNR{c=$1; next} {print ++c" "$0 >> "file1"}' file1 file2
$ cat file1
1 abc x
2 bcd y
3 efg z
4 mkh 1a
5 dfd foo
6 aad bar
Responder4
Uma resposta muito simples:
$ cat testText 1. A rápida raposa marrom saltou sobre o cachorro preguiçoso. $ cat testText | tr ' ' '\n' | classificar >testText2 $ cat -n testText testText2 1 1. A rápida raposa marrom saltou sobre o cachorro preguiçoso. 2 1. 3 marrons 4 cachorro. 5 raposa 6 saltou 7 preguiçoso 8 acima 9 rápido 10 o 11 O