我有一个大的数据文件( data.txt )和一个模式文件( patt.dat ),数据如下所示
data.txt中
[bottle]:[some description 1] [pen]:[some description 2] [mobile]:[some description 3] [pen_pencil]:[some description 4] [mouse]:[some description 5]
patt.dat
pen mobile
我给这样的
如何grep一个特定的模式,并打印所有高于和低于该模式,直到你达到一个指标(LINUX)?
如何用AWKselect一些列?
AWK中的Linux命令
grep -F -f patt.dat data.txt
然后我得到下面
[pen]:[some description 2] [mobile]:[some description 3] [pen_pencil]:[some description 4]
但我只想要,
[pen]:[some description 2] [mobile]:[some description 3]
请帮助任何解决scheme。
我不想硬编码任何东西,因为会有很多这样的模式,硬编码都不好看。
如果可能的话也可以用其他方式来实现,那么也请给出一个build议。
无法从shell脚本中获得awk命令的任何输出
双引号内的逗号分隔值
最简单的方法来从Unix命令行进行基本的XMLparsing
将行移到文件中的另一行
awk shebang不起作用
使用-w进行单词匹配,就像:
grep -wf patt.dat data.txt Output: [pen]:[some description 2] [mobile]:[some description 3]
sed 's/.*/^[&]/' patt.dat > /tmp/patt_grep.dat egrep -F -f /tmp/patt_grep.dat data.txt
需要改变一下patt.dat的内容,以允许另一个有效的工具工作。 我使用egrep来允许^但是可以使用(f)grep改变格式[word]:[改为
这里是如何用awk来完成的
awk -F"[][]" 'FNR==NR {a[$1];next} $2 in a' patt.dat data.txt [pen]:[some description 2] [mobile]:[some description 3]
如果你想测试更多的参数, awk可能是最简单的解决方案。
它将模式存储在数组a ,然后测试数组a是否存在字段2 ,如果找到,则打印该行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。