终端从文件中提取以“.abc”结尾的单词

时间:2014-11-13 04:54:52

标签: bash file text terminal osx-mavericks

我想通过终端进行以下操作。我有一个包含许多行的文件,每行包含一个完整的句子。有些行是空的。我想阅读文件并提取以.abc结尾的所有单词。我想通过终端这样做。我怎么能这样做?

4 个答案:

答案 0 :(得分:2)

grep可能非常有用

$ cat input

.abc
.abdadf
assadf.abc
adsfas.abcadf
asdf.abc

$ grep -o '\b[^\.]*\.abc\b' input

assadf.abc
asdf.abc

它的作用

  • -o在与给定的正则表达式匹配的行中打印字符串

  • \b[^\.]*\.abc\b正则表达式匹配以.abc

    结尾的任何单词
    • \b字边界

    • [^\.].

    • 以外的任何内容
    • *匹配零个或多个

    • \.abc\b匹配.abc后跟字边界\b

注意

如果单词可以包含多个.,则将正则表达式修改为

\b.*\.abc\b

其中.*会匹配任何内容,包括.

答案 1 :(得分:1)

查找以.abc结尾的所有字词。

grep -oP '\S*\.abc(?=\s|$)' file
  • \S*零个或多个非太空漫画。
  • (?=\s|$)正向前瞻断言匹配后的字符必须是行锚的空格或末尾。

答案 2 :(得分:1)

在各种其他可能性中尝试awk

awk '/\.abc$/' file

答案 3 :(得分:1)

您也可以使用sed命令。

sed -n '/\.abc$/ p' file