Pokud chcete:
přidejte to do existujícího skriptu.
Můžete vložit další \"\" v každém argumentu print takhle:
print "\"admin\"", "\"base\"", ...
Upraveno:
Ano, možná je lepším řešením nastavení OFS:
BEGIN { OFS="\";\""; } ... print "\"admin", ...., "simple\"";
awk '{for (i=1;i<=NF;i++) $i="\""$i"\""}1' FS=";" OFS=";" input
Chcete-li přidat uvozovky kolem položek, můžete použít jednoduchou smyčku AWK:
Skript – simple_loop.awk
BEGIN {FS=";"}
{
for(i=1;i<NF;i++){
printf("\"%s\";", $i);
}
printf("\"%s\"\n",$NF);
}
Například
echo "admin;base;5.11 HOLSTER SHIRT L WHITE;;" | awk -f simple_loop.awk
Měl by vystupovat
"admin";"base";"5.11 HOLSTER SHIRT L WHITE";"";""
V tomto případě bych použil sed výraz místo AWK.
Pokud jsou vaše data v souboru s názvem data.txt , můžete si to napsat:
sed "s/;/\";\"/g;s/^/\"/;s/$/\"/" data.txt
To vytiskne výsledek na výstup std, ale pokud chcete nahradit obsah souboru, použijte sed -i tímto způsobem:
sed -i "s/;/\";\"/g;s/^/\"/;s/$/\"/" data.txt
A to je vše!!
Vysvětlení: sed výraz se skládá ze tří sed příkazy oddělené ";" které můžete spustit samostatně:
sed "s/;/\";\"/g
Provede substituci (to znamená první "s"), poté "/" (výchozí oddělovač), ";" to je to, co chceme nahradit. Potom druhý oddělovač "/" a nahrazení:\";\" Je to posloupnost:uvozovka, středník a uvozovka. Tímto příkazem tedy nahradíme středníky ; podle ";" . Posledních /g znamená, že každý ; bude nahrazeno (nejen první smajlík).
Pokud byl vstup a;b;c po tomto spuštění prvního příkazu to bude a";"b";"c .
Nyní musíme na začátek přidat uvozovky (^ v regulárním výrazu) a nakonec ($ ). Takže to znamená:
sed "s/^/\"/" // the first quote
A
sed "s/$/\"/" // the last quote
Získání požadovaného výstupu:
"a";"b";"c"