Cómo imprimir el contenido de un archivo como una sola línea entre comillas y separadas por comas.
$cat test
file1.gz
file2.gz
file3.gz
file4.gz
Quiero imprimir como 'file1.gz','file2.gz','file3.gz','file4.gz'
2 respuestas
$ awk '{printf "%s\047%s\047", sep, $0; sep=","} END{print ""}' file
'file1.gz','file2.gz','file3.gz','file4.gz'
O funcionalidad equivalente pero almacenando todo el archivo de entrada en la memoria:
$ awk '{out=out sep "\047" $0 "\047"; sep=","} END{print out}' file
'file1.gz','file2.gz','file3.gz','file4.gz'
Y abreviada para las golfistas :-):
$ awk -v q="'" '{o=o s q $0 q; s=","} END{print o}' file
'file1.gz','file2.gz','file3.gz','file4.gz'
Personalmente, usaría el primer script anterior a menos que tenga alguna necesidad específica de construir todo el registro de salida antes de imprimirlo, p. modificarlo de alguna manera basado en una expresión regular de varias líneas.
Convierta una columna en una fila con separador. Con sed y pasta:
sed "s/.*/'&'/" file | paste -sd ","
Salida:
'file1.gz','file2.gz','file3.gz','file4.gz'
Preguntas relacionadas
Nuevas preguntas
awk
AWK es un lenguaje de programación interpretado diseñado para el procesamiento de texto y generalmente se utiliza como una herramienta de extracción de datos e informes. AWK se usa en gran medida con sistemas Unix.