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"