我想打印所有包含Word的栏,例如“西瓜”。A正在考虑一起使用这两个公式,因为它们各自独立工作(一个为文件中的每一列做一些操作,另一个检查列是否包含特定的单词)。
awk '{for(i=1;i<=NF-1;i++) printf $i" "; print $i}' a.csv
awk -F"," '{if ($2 == " watermelon") print $2}' a.csv
但当我尝试将它们放在一起时,我的代码不起作用
# !/bin/bash
awk '{for(i=1;i<=NF-1;i++)
awk -F"," '{if ($i == " watermelon")
print $i}' a.csv
}' a.csv
例如,这是我的文件a.csv
lp, type, name, number, letter
1, fruit, watermelon, 6, a
2, fruit, apple, 7, b
3, vegetable, onion, 8, c
4, vegetable, broccoli, 6, b
5, fruit, orange, 5, c
这就是我在搜索西瓜单词时想要得到的结果
name
watermelon
apple
onion
broccoli
orange
2条答案
按热度按时间eblbsuwk1#
上面的方法和@JamesBrown的方法之间的主要区别是,在文件的第二遍中,我的脚本只循环要输出的字段,而James的循环遍历所有输入字段,因此在通常情况下,并不是所有的输入字段都必须输出,所以速度会更慢。
关于代码中的
printf $i
-永远不要这样做,总是对任何输入数据执行printf "%s", $i
,因为当您的输入包含像%s
这样的printf格式字符时,printf "%s", $i
将失败。j2qf4p5b2#
以下是对数据进行两次处理的方法:
产出: