微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用sed或awk在单独的文件中格式化模式

我有一个大的数据文件( 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命令

如果文件1中的列A等于文件2中的列B,则打印行

awk脚本匹配一个模式,然后在分隔符后删除整行

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] 举报,一经查实,本站将立刻删除。

相关推荐