GNU/Linux >> Znalost Linux >  >> Linux

co znamená 1 na konci awk skriptu

awk program je řada párů podmínka-akce, přičemž podmínky jsou mimo složené závorky a akce jsou v nich uzavřeny. Podmínka je považována za nepravdivou, pokud se vyhodnotí jako nula nebo prázdný řetězec, cokoliv jiného je pravda (neinicializované proměnné jsou nula nebo prázdný řetězec, v závislosti na kontextu, takže jsou nepravdivé). Může být implikována podmínka nebo akce; složené závorky bez podmínky (jak začíná ta vaše) jsou považovány za mající pravdivou podmínku a jsou vždy provedeny, pokud jsou splněny, a jakákoli podmínka bez akce vytiskne řádek pouze tehdy, pokud je podmínka splněna.

1 na konci vašeho skriptu je podmínka (vždy pravdivá) bez akce, takže provede výchozí akci pro každý řádek a vytiskne řádek (který mohl být změněn předchozí akcí ve složených závorkách).


Opravdu nemám rád tyto typy zkratek, protože zatemňují a zavádějí, jak jsou analyzovány. Když čtete něco jako awk -F"=" '{OFS="=";gsub(",",";",$2)}1' , můžete si myslet, že 1 upravuje předchozí prohlášení. Nebo si můžete myslet 1 je alias pro {print} , což není technicky správné.

Ve skutečnosti 1 je zcela samostatný výrok. Výroky můžete oddělit takto:

awk -F"=" '
{OFS="="; gsub(",",";",$2)}
1
'

Formát každého příkazu awk je condition {action} . Pokud neexistuje {action} zadaná, pak je výchozí akce {print} . (Pokud neexistuje condition daná, pak výchozí podmínka je true .)

Takže tady, 1 je podmínka, která se vždy vyhodnotí jako true protože je nenulová. action je vynechán, takže výchozí {print} se provádí. Můžete si to představit takto:

awk -F"=" '
{OFS="="; gsub(",",";",$2)}
1!=0 {print}
'

1 znamená vytisknout každý řádek.

Příkaz awk je stejný jako zápis:

awk -F"=" '{OFS="=";gsub(",",";",$2);print $0;}'

Linux
  1. Co znamená tilda (~) na konci názvu souboru?

  2. K jakému účelu slouží Colon Builtin „:“?

  3. Co znamená POSIX?

  1. Co dělá řádek '!/bin/sh -e'?

  2. Co znamená &na konci linuxového příkazu?

  3. Co znamená dvojitý znak dolaru v bash/Makefile?

  1. Jaký je rozdíl mezi prováděním skriptu Bash a jeho získáváním?

  2. Zjistěte, jaký proces je na druhém konci potrubí

  3. Jaký je význam curl -k -i -X ​​v Linuxu?