这是输入文件的一行:
FOO 酒吧 0.40 0.20 0.40 0.50 0.60 0.80 0.50 0.50 0.50 -43.00 100010101101110101000111010
还有一个 awk 命令,它检查第 13 列中的某个位置是否为“1”或“0”,例如:
awk -v values="${values}" '{if (substr($13,1,1)==1) printf values,$1,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13}' foo.txt > bar.txt
values 变量有效,但我只想在上面的示例中检查第一位是否等于“1”。
编辑
好的,所以我想我的问题不是很清楚。substr 方法中的“$13”实际上是位串。因此,这个 awk 想要传递 foo.txt 中在“$13”列的位串“1”位置具有“1”的所有行。希望这可以澄清事情。
编辑 2
好的,让我很容易地分解它。上面的代码是示例,因此输入行是许多行之一。因此,并非所有行在位置 8 处都有 1。我已经仔细检查了某个位置是否同时出现了两种情况,因此无论如何我都应该得到一些输出。问题是在所有行中,它在我选择的位置上都找不到任何“1”,但是当我说它必须找到一个“0”时,它会返回所有行。