首页 > 解决方案 > 只取开头有 doller 符号的行

问题描述

我有一个请求文件$,我只想从文件中获取这些行。

下面是我的文件。

猫测试文件

$ oc adm groups new dev-group
group.user.openshift.io/dev-group created
4.2. Add the developer user to dev-group.
$ oc adm groups add-users dev-group developer
group.user.openshift.io/dev-group added: "developer"
4.3. Create a second group called qa-group.
$ oc adm groups new qa-group
group.user.openshift.io/qa-group created
4.4. Add the qa-engineer user to qa-group.
$ oc adm groups add-users qa-group qa-engineer
group.user.openshift.io/qa-group added: "qa-engineer"

我尝试了什么:

# cat test_file | grep "(\$\w+)\[(\w*[a-z]\w*)\]"

and 

# cat test_file | grep '\$\$\$'

预期的:

$ oc adm groups new dev-group
$ oc adm groups add-users dev-group developer
$ oc adm groups new qa-group
$ oc adm groups add-users qa-group qa-engineer

我用谷歌搜索了给定的解决方案对我没有用,我在 ubuntu 14 上运行

标签: regexlinuxawksedgrep

解决方案


您可以使用awk

$ awk '/^\$/' file

还有sed

$ sed -ne '/^\$/p' file

或者grep

$ grep '^\$' file

笔记:

  1. 所有三个都使用相同的锚点BRE^指示行的开头并\$表示文字$
  2. 由于$是正则表达式元字符,表示行尾,因此需要对其进行转义,\$或者您可以使用字符类使其文字化[$]
  3. /^$/带有未转义的正则表达式$将是空行的正则表达式,因为^表示行的开头和行$的结尾。
  4. 您不需要用作、或cat的输入。每个人都可以直接读取文件,这通常比 catting 文件更受欢迎。(参见Cat 的无用使用sedawkgrep

推荐阅读