Josef Klimuk Asked: 2021-01-25 06:55:54 +0800 CST2021-01-25 06:55:54 +0800 CST 2021-01-25 06:55:54 +0800 CST 如何grep所有以'.txt'结尾的字符串 772 我需要在文本文件中找到所有以“.txt”结尾的字符串。我试过了: grep 'txt$' myFile 但它给出了整行,而不仅仅是以 '.txt' 结尾的字符串 grep 1 个回答 Voted Best Answer FedKad 2021-01-25T07:10:59+08:002021-01-25T07:10:59+08:00 如果您只想列出匹配的“字符串”,您应该使用以下-o选项grep: grep -o '\w*\.txt\b' myFile 或者 grep -Eo '\w+\.txt\b' myFile 手册页这样解释这个选项: -o,--仅匹配 仅打印匹配行的匹配(非空)部分,每个这样的部分在单独的输出行上。 但是,您需要定义您对“字符串”的理解。我假设“字符串”类似于手册页中描述的“单词”: 符号 \< 和 \> 分别匹配单词开头和结尾的空字符串。符号 \b 匹配单词边缘的空字符串,而 \B 匹配不在单词边缘的空字符串。符号 \w 是 [_[:alnum:]] 的同义词,\W 是 [^_[:alnum:]] 的同义词。 在上面的例子中,两个字母的序列意味着: 序列。 解释 \w 任何字母数字字符 \w* 任意数量(0 个或更多)的字母数字字符 \w+ 任意数量(1 个或更多)的字母数字字符(扩展正则表达式) \. 句点 ( .) 字符本身(.具有特殊含义,应转义) \b 匹配单词的结尾(字符串后面不再有字母数字字符txt) 注意:$您在问题中使用的字符表示“行尾”,它将导致匹配字符串而不是仅txt出现在行尾。
如果您只想列出匹配的“字符串”,您应该使用以下
-o
选项grep
:或者
手册页这样解释这个选项:
但是,您需要定义您对“字符串”的理解。我假设“字符串”类似于手册页中描述的“单词”:
在上面的例子中,两个字母的序列意味着:
\w
\w*
\w+
\.
.
) 字符本身(.
具有特殊含义,应转义)\b
txt
)注意:
$
您在问题中使用的字符表示“行尾”,它将导致匹配字符串而不是仅txt
出现在行尾。