GNU/Linux >> Znalost Linux >  >> Linux

Přidat dvojité uvozovky kolem polí ve výstupu skriptu AWK?

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"

Linux
  1. Gawk skript pro převod chytrých uvozovek

  2. Jak přidat nové řádky do proměnných ve skriptu Bash?

  3. Odeberte konkrétní znak pomocí awk nebo sed

  1. Bash zachycující výstup awk do pole

  2. Odstraňte prázdné řádky pomocí sed

  3. Spuštění skriptu Python z PHP

  1. Kdy je nutné dvojité uvozování?

  2. Přidejte bash skript do cesty

  3. jak odstranit dvojité uvozovky v csv