这是我的问题。一个名为data.f的现有文件,我使用整理符号“48”,我想在我的文件中将“48”与括号表达式中的整理符号匹配。
grep '[[.48.]]' data.f
但是有一些错误提示:
grep: Invalid collation character
但是,括号表达式中的字符类没有问题。
grep "[[:alpha:]]" data.f
答案 0 :(得分:1)
如果你想要grep 48
grep 48 file
如果你想grep“48”
grep '"48"' file
//为了避免在评论中进行讨论,我将使用更多示例扩展我的帖子
如果你想在一行中出现“48”,你应该使用正则表达式
cat file | grep '\(.*"48"\)\{n\}' | grep -v '\(.*"48"\)\{n+1\}'
基本上你用至少n次出现的grep行,然后用反转匹配你排除出现n + 1次字符串的行,所以你得到n次出现
在你评论中提到你想要用5次出现的“48”grep行,可以用其他字符分隔(这就是我放的原因。*在“48”之前) 所以这是样本
cat file | grep '\(.*"48"\)\{5\}' | grep -v '\(.*"48"\)\{6\}'
答案 1 :(得分:0)
不会grep '48' data.f
工作吗?
答案 2 :(得分:0)
我不知道你的意思是“我使用整理符号”48“”(我知道校对类是什么,这是grep期望在你的输入中看到的,但我不知道什么是校对符号会be),但是从你的一条评论中,你似乎确实在文件中寻找确切的字符串[[.48.]]
。这有两种方法:
grep -F '[[.48.]]' data.f
grep '\[\[.48.]]' data.f
在您的其他一条评论中,您询问了如何向grep询问至少有五次出现“48”的行。这是一个非常明确的正则表达式问题:
grep -E '(.*48){5}' data.f