Agregar carácter al principio y al final de la columna

Agregar carácter al principio y al final de la columna

Tengo un archivo como este:

78@54@this@15@23
65@22@is@92@16
34@12@an@14@18
13@42@example@52@22

Y quiero cambiarlo a esto:

"78"@54@"this"@15@23
"65"@22@"is"@92@16
"34"@12@"an"@14@18
"13"@42@"example"@52@22

He estado luchando con esto durante mucho tiempo y no puedo entender cómo hacerlo. Cualquier ayuda se agradece, gracias.

Respuesta1

Podrías probar awk:

echo "78@54@this@15@23
65@22@is@92@16
34@12@an@14@18
13@42@example@52@22" |
awk -F@ '{print "\""$1"\"@"$2"@\""$3"\"@"$4"@"$5}' 

"78"@54@"this"@15@23
"65"@22@"is"@92@16
"34"@12@"an"@14@18
"13"@42@"example"@52@22

Respuesta2

Un poco más detallado, pero escribiría esto mal:

awk -F@ -v OFS=@ '
    function quote(x) {return sprintf("\"%s\"", x)}
    {print quote($1), $2, quote($3), $4}
'

Respuesta3

creo que unsolución incorrectaProbablemente sea mejor, pero también puedes usar sed:

sed -r 's/(\d+)@(\d+)@(\w+)(.*)/"\1"@\2@"\3"\4/' /path/to/your/file

Respuesta4

En awk: agregue comillas alrededor de los primeros tres campos, luego imprima la línea.

awk -F @ '{for (i = 1; i <= 3; i++) $i = "\"" $i "\""; print}'

-F @establece el separador de campo en @. El bucle añade comillas alrededor de los primeros tres campos. El final print(abreviatura de print $0) imprime la línea con los campos modificados; $0se reconstruye cada vez que se cambian campos individuales ( $1,, …).$2

información relacionada