我正在尝试执行一个grep命令,该命令查找文件中的所有行,其中第一个单词以“as”开头,而第一个单词也以“ng”结尾
我将如何使用grep进行此操作?
答案 0 :(得分:10)
这应该就是这样做的:
$ grep '^as\w*ng\b' file
<强> Regexplanation:强>
^ # Matches start of the line
as # Matches literal string as
\w # Matches characters in word class
* # Quantifies \w to match either zero or more
ng # Matches literal string ng
\b # Matches word boundary
可能错过了奇怪的角落。
如果您只想打印匹配而不是整行的字词,请使用-o
选项:
$ grep -o '^as\w*ng\b' file
阅读man grep
以获取有关可用选项的所有信息。
答案 1 :(得分:1)
我很确定这应该有效:
grep "^as[a-zA-Z]*ng\b" <filename>
很难说没有看到实际输入文件中的样本。
答案 2 :(得分:1)
grep -i '^as[^ ]*ng\b' <file>
-i to make grep case-insensitive
[^ ]* matches zero or more of any character, except a space
答案 3 :(得分:0)
^
找到“第一行中的第一个字符”,因此您可以使用以下内容进行搜索:
grep '^as' [file]
\w
匹配单词字符,因此\w*
会匹配任意数量的单词字符:
grep '^as\w*' [file]
\b
表示'单词和空格之间的边界',您可以使用它来确保您匹配单词末尾的'ng'字母,而不是仅仅位于中间的某个位置:< / p>
grep '^as\w*ng\b' [file]
如果您选择省略[file]
,只需将文件传输到其中:
cat [file] | grep '^as\w*ng\b'
或
echo [some text here] | grep '^as\w*ng\b'
这就是你要找的东西吗?