Tengo dos archivos de csv/texto que me gustaría unir. Ambos contienen la misma primera línea. Intento averiguar cómo usar sed y cat para producir un archivo fusionado, pero con solo una copia de la primera línea. Y estoy teniendo un tiempo con la sintaxis. Cualquier ayuda sería muy apreciada: ¡D! Gracias , AndrewArchivo1 + (Archivo2 - primera línea)> Archivo3
Respuesta
Esto combinar archivos y data1.txt
data2.txt
en el archivo merged.txt
, omitiendo la primera línea de data2.txt
. Utiliza awk si estás bien con él:
(cat data1.txt; awk 'NR>1' data2.txt) > merged.txt
awk agrega todas las líneas con número de línea> 1 de archivo data2.txt
para presentar merged.txt
.
NR
es una variable incorporada awk que representa el número de línea actual del archivo que se está procesando. Si la expresión booleana NR > 1
es verdadera, awk imprime la línea implícitamente.
Si no se preocupan por mantener intacta data1.txt
, usted podría añadir a su segundo archivo (menos su primera línea) y reducir a esto:
awk 'NR>1' data2.txt >> data1.txt
Otra opción con awk:
awk 'NR==FNR || FNR>1' file1.txt file2.txt .. fileN.txt
Esto imprime todas las líneas en el primer archivo, O cualquier línea en los archivos posteriores después de la primera línea.
qué pasaría si hiciera esto: 'awk 'NR == FNR || FNR> 1 '* .txt' –
Confiaría en el orden de los archivos que coincidían con el archivo globbing. Si todos contienen las primeras líneas idénticas, entonces esto debería ser seguro. ¿Por qué no lo intentas y ves qué pasa? – ghoti
resuelto con una línea '1 d' significa eliminar primera línea en fichero2
el siguiente comando añadirá el resultado de archivo1
sed '1 d' file2 >> file1
Está modificando 'file1' y' file2' con este comando; esto puede o no estar bien con OP. Es mejor proporcionar ambas opciones (la otra no cambia ninguno de los archivos originales). – Levon
@Levon: no, no está modificando 'file2' aquí. – tripleee
@tripleee Acabo de probarlo, no * elimina * sino que * no muestra * la primera línea .. lo obtuve. Sin embargo, probablemente podría formularse mejor en la respuesta. – Levon
Yo diría que la solución más sencilla es:
(cat file1.txt ; tail -n +2 file2.txt) > file3.txt
Tiene la ventaja de indicar con claridad exactamente lo que está haciendo: imprimir todo el primer archivo, a continuación, imprimir todos excepto la primera línea de la sE archivo cond, escribiendo el resultado en el tercer archivo.
¡Guau! ¡¡¡¡¡¡¡Gracias a todos!!!!!!! :-RE –
- 1. Comparar dos archivos línea por línea y generar la diferencia en otro archivo
- 2. guardando múltiples archivos a través de xcopy
- 3. Eliminar todo el contenido del archivo
- 4. Cómo configurar svn: ignorar con múltiples valores?
- 5. ftp subir varios archivos sin desconexión utilizando .NET
- 6. ¿Cómo hacer un tipo natural en un NSArray?
- 7. git: ¿Cómo sobrescribo todos los cambios locales en la fusión?
- 8. eliminar y cambiar el nombre de un archivo en java
- 9. Java IO para copiar un archivo en otro
- 10. cómo compartir una variable y su valor entre muchos archivos fuente en lenguaje c?
- 11. ¿Cómo puedo encontrar el archivo principal de un único archivo después de copiar?
- 12. En mercurial, ¿cómo ver diff en un conjunto de cambios de combinación y un padre sin cambios del otro padre?
- 13. CSV restricciones primera célula
- 14. Primera implementación importante
- 15. Selector de primera palabra
- 16. primera respuesta explicación necesaria
- 17. Display primera letra única
- 18. LINQ SELECCIONE PRIMERA FILA
- 19. Herencia EF Código-Primera
- 20. primera función desconocida
- 21. Comando Unix para encontrar cadenas de intersecciones o valores atípicos?
- 22. comparar dos archivos en UNIX
- 23. deshacer DIFF puso al copiar líneas entre ventanas vimdiff
- 24. Entidad Framework - Primera consulta lenta
- 25. excelente primera experiencia de ejecución
- 26. sed, reemplace la primera línea
- 27. CTP5 EF Código primera pregunta
- 28. Primera coincidencia en una colección
- 29. android listview primera posición visible
- 30. Obteniendo la primera propiedad JSON
Alternativamente, puede usar 'tail -n + 2' en lugar de' awk 'NR> 1''. –
@ TannerL.Swett Neat .. Estaba pensando en usar 'head' o' tail' de alguna manera, pero estaba seguro de cómo hacerlo con 'awk'. Y, por supuesto, si a OP no le importa guardar 'data1.txt', la solución podría omitir el primer comando y anexar el segundo archivo (la primera línea) a ese archivo. – Levon