
Quiero agregar file2
a file1
. Antes de hacer eso, necesito agregar un número de línea personalizado al archivo file2
.
file1
1 abc
2 bcd
3 efg
file2
mkh
dfd
aad
Agregue el número de línea a
file2
lo siguientefile1
.4 mkh 5 dfd 6 aad
anexar
file2
afile1
cat file2 >> file1
¿Cómo puedo agregar el número de línea que file2
se muestra arriba?
Respuesta1
nl -v "$((1+$(wc -l < file1)))" file2 >> file1
nl
es una herramienta paranorteocre oscuroyolíneas de un archivo. El -v
modificador proporciona el valor inicial de los números de línea. Utilizo una subcapa y wc
para obtener un recuento de líneas de file1
, le agrego una para obtener el número de línea inicial file2
y concateno los resultados al final de file1
.
Tenga en cuenta que wc -l file1
imprimiría el recuento de líneas seguido del nombre del archivo, pero como hemos redirigido wc
la entrada estándar de file1
, la wc
herramienta en sí no sabe nada sobre el nombre del archivo file1
y solo imprime el recuento de líneas (con algunos espacios en blanco que no No importa en este contexto).
Esto puede hacerselevementemás limpiamente simplemente usando awk
y nl
:
nl -v $(awk 'END { print NR + 1 }' file1) file2 >> file1
Respuesta2
Con awk
:
awk -v nl=$(wc -l <f1.txt) '{print NR+nl " " $0}' f2.txt
$(wc -l <f1.txt)
obtiene el número de líneas en el archivof1.txt
, lo pasamos comonl
variable aawk
print NR+nl " " $0
imprime cada registrof2.txt
con el número de línea correspondiente agregado a la variablenl
, luego un espacio y luego el registro completo
Ejemplo:
% 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
Respuesta3
Otra awk
solución:
$ 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
Respuesta4
Una respuesta muy simple:
$ texto de prueba de gato 1. El veloz zorro marrón saltó sobre el perro perezoso. $ texto de prueba de gato | tr ' ' '\n' | ordenar >testText2 $ cat -n texto de prueba texto de prueba2 1 1. El veloz zorro marrón saltó sobre el perro perezoso. 2 1. 3 marrones 4 perros. 5 zorro 6 saltó 7 perezoso 8 más 9 rápido 10 el 11 El