在Unix命令行(CentOS7)中,我必须使用grep
命令来查找以下所有单词:
1.至少 n 个字符
1.最多 n 个字符
1.正好 n 个字符
我已经搜索了这里的帖子寻找答案,并想出了grep -E '^.{8}' /sample/dir
,但这只让我得到了至少8个字符的单词。
在末尾使用$
不会返回任何值。例如:grep -E '^.{8}$' /sample/dir
我还想修剪/sample/dir中的信息,以便只看到特定的信息。我尝试使用管道:
cut -f1,7 -d: | grep -E '^.{8}' /sample/dir
根据订单的不同,这只能让我得到一个或另一个,而不是两个都得到。
我只希望用户名在每一行的开头,而不是在整个文件的每一行的所有单词。
例如,如果我想在我的系统上查找用户ID,结果应该是:
1.
tano-ahsoka
skywalker-a
kenobi-obiwan
ahsoka-t
luke-s
leia-s
ahsoka-t
kenobi-o
grievous
我在这里寻找两个答案,因为我已经找到了第一个答案。
2号和3号由于某种原因不起作用。
如果可能的话,我还想对所有三个输出应用切割。
任何和所有的帮助是赞赏,谢谢!
2条答案
按热度按时间dgsult0t1#
您可以运行一个grep来提取单词,运行另一个grep来根据长度进行过滤。
根据需要更新模式,可能使用
-r
并指定目录而不是文件。可能还需要添加-h
选项以防止打印文件名。c3frrgcw2#
根据grep的实现情况,可以用途: