Você pode experimentar este:
awk 'NR == 1 { if ($1 == "v1") { p = 1; } } NR == 3 { if (p) { print $2 "\t" $3; } else { print $1 "\t" $4; } }' file
Estou procurando selecionar condicionalmente duas colunas da terceira linha de um arquivo com base na primeira coluna da primeira linha do arquivo.
Aqui está o formato do arquivo:
v1
shortdesc
value1 value2 value3 value4 ...
Usando este exemplo, eu quero value2
e value3
if v1
, caso contrário, gostaria de value1
e value4
.
Eu sei como obter a linha e a coluna usando algo como awk 'FNR ==1 {print $1}
, mas como eu uso a cláusula if
?
O código que não está funcionando para mim é parecido com isto:
awk '{if("NR == 1 $1"=="v1") {FNR==3 print $2 "\t" $3;} else {FNR==3 print $1 "\t" $4;}}'
Apenas por diversão: sed
sed -n '1h
3{
x
G
s/v1\n\S* \(\S* \S*\).*//p
t
s/.*\n\(\S*\) \S* \S*\( \S*\).*//p
}
4Q' file
teste , cabeça , final , corte
[ $(head -1 file) == 'v1' ] &&
field='2,3' ||
field='1,4'
head -5 file | tail -1 | cut -d" " -f"$field"
bash
{ read v1
read
read a b c d e
} <file
[ "$v1" == 'v1' ] && echo $b $c || echo $a $d
Tags awk