ファイルの最初の行の最初の列に基づいて、ファイルの3番目の行から2つの列を条件付きで選択したいと思います。
ファイル形式は次のとおりです。
v1
shortdesc
value1 value2 value3 value4 ...
この例では、私はvalue2
andが欲しい、value3
そうでなければandがv1
欲しい。value1
value4
同様の方法で行と列を取得する方法を知っていますが、句をawk 'FNR ==1 {print $1}
使用する方法は何ですかif
?
私にはうまくいかないコードは次のとおりです。
awk '{if("NR == 1 $1"=="v1") {FNR==3 print $2 "\t" $3;} else {FNR==3 print $1 "\t" $4;}}'
答え1
次のことを試すことができます。
awk 'NR == 1 { if ($1 == "v1") { p = 1; } } NR == 3 { if (p) { print $2 "\t" $3; } else { print $1 "\t" $4; } }' file
答え2
楽しみとして:
sed
sed -n '1h
3{
x
G
s/v1\n\S* \(\S* \S*\).*/\1/p
t
s/.*\n\(\S*\) \S* \S*\( \S*\).*/\1\2/p
}
4Q' file
テスト、頭、尾、切る
[ $(head -1 file) == 'v1' ] &&
field='2,3' ||
field='1,4'
head -5 file | tail -1 | cut -d" " -f"$field"
強く打つ
{ read v1
read
read a b c d e
} <file
[ "$v1" == 'v1' ] && echo $b $c || echo $a $d