1 A 18 -180
2 B 19 -180
3 C 20 -150
50 D 21 -100
128 E 22 -130
10 F 23 -0
10 G 23 -0
在上面的文件中,我可以使用cat命令轻松地打印出该列。
cat /file_directory | cut -d' ' -f3
在这种情况下,输出将是第三列。
但是,我想做的事情有所不同。例如,我想根据行元素选择元素。
因此,如果我从第二行中选择B,则打印输出为[row associated "B" in the second column ][column =3] = [2][3].
,它仅为19,没有其他值。怎么做?
使用awk
:
$ awk '$2 == "B" {print $3}' file.txt
19
awk
将每一行拆分为多个字段(默认情况下,使用任意空格和字段定界符)。每个语句都有两部分:选择行的模式和对选定行采取的操作。在上面,我们检查第二列($2
)是否具有值"B"
;对于正确的每一行,我们将在第三列中打印该值。
#!/bin/sh
cat sofile+.txt | tr -s ' ' > sofile1+.txt
mv sofile1+.txt sofile+.txt
cat > edcommands+.sh << EOF
/B/
EOF
line=$(ed -s sofile+.txt < edcommands+.txt)
echo ${line} | cut -d' ' -f2,3
rm ./edcommands+.txt
Sofile + .txt是包含您的数据的地方。
不幸的是,您可能还需要为此安装ed,因为默认情况下大多数发行版中都不再包含ed。