图案滤波器端子

纽伯

我的上一个脚本生成了一个txt文档,其中包含文件的前10行/etc/passwd我想通过显示以下内容中的前3个字来过滤文件中的20行*:*:*:(其中*= words)

这是我正在解决的问题,但无法正常工作:

#!/bin/bash
echo "**********************************"
echo "Today is: "$(date "+%d%m%Y")
echo "**********************************"
echo "This are the data that last script generated"
echo "**********************************"
echo
echo $(grep *:*:*: /tmp/test-file)
点心

如果需要使用grep,可以将每行的前三个字段与

grep -o '^[^:]*:[^:]*:[^:]*'

这会匹配行(^的开头,然后匹配除冒号:后跟冒号:等的所有内容。由于有了此-o选项,grep仅打印匹配行的匹配(非空)部分,请参见man grep这是前两行的示例/etc/passwd

$ grep -oh '^[^:]*:[^:]*:[^:]*' <(head -2 /etc/passwd) <(tail -2 /etc/passwd)
root:x:0
daemon:x:1
timidity:x:122
geoclue:x:123

https://www.regular-expressions.info/gnu.html上阅读有关正在使用的基本正则表达式(BRE)的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章