使用BASH,选择行和列[CUT命令?]

问题描述 投票:0回答:2
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,没有其他值。怎么做?

bash
2个回答
2
投票

使用awk

$ awk '$2 == "B" {print $3}' file.txt
19

awk将每一行拆分为多个字段(默认情况下,使用任意空格和字段定界符)。每个语句都有两部分:选择行的模式和对选定行采取的操作。在上面,我们检查第二列($2)是否具有值"B";对于正确的每一行,我们将在第三列中打印该值。


0
投票
#!/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。

© www.soinside.com 2019 - 2024. All rights reserved.