O linie de bază condiționată Awk (Unix, Linux, Script Shell, Awk)

Bee Min a intrebat.
a intrebat.

Încercarea de a obține awk să se uite într-un fișier și să verifice dacă o coloană are o valoare.

  • Dacă are o valoare „x”, atunci imprimați „x” într-un e-mail (prin "| mail -s ").
  • Dacă nu se potrivește cu „x”, atunci tipăriți „fără valoare”, dar trimiteți totuși un e-mail.

Încercând ceva de genul:-

awk -F ''{if($3 != 0) {a = ($3); print $0, a;} else if ($3==0) print "No updates"}'  file.in | mail...etc 

Comentarii

  • Cum poate arăta intrarea? –  > Por Kusalananda.
3 răspunsuri
Kusalananda
awk '$3 == "x" { print $3 } $3 != "x" { print "no value" }' file.in | mail ...

sau

awk '{ print ($3 == "x" ? $3 : "no value") }' file.in | mail ...

sau

awk '$3 != "x" { $3 = "no value" } { print $3 }' file.in | mail ...

Având în vedere fișierul

1 2 3
2 3 x
4 5 x

cele trei awk programe vor produce rezultatul

no value
x
x

αғsнιη

încercați

awk '{ print ($3!="x")?"No Updates":$3 }' infile | mail ... 

Praveen Kumar BS

Am încercat prin metoda de mai jos

g=`awk '{print NF}' l.txt| sort -nr | head -1`

Pentru x există un model

for ((l=1;l<=$g;l++)); do awk -v l="$l" '$l == "x" {print "exists in"l"column"}' l.txt| sort -u; done |mail ..

pentru x modelul nu există

for ((l=1;l<=$g;l++)); do awk -v l="$l" '$l != "x" {print " doesnt exists in"l"column"}' l.txt|sort -u; done| mail

fișier de intrare

[[email protected]_2 ~]# cat l.txt
10 x x
10 x x