添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

提示grep只显示匹配结果

0 人关注

你好,我目前正在使用grep功能对我的/etc/passwd文件进行搜索,以检查输入的GID是否与系统的GID相符。但我想做grep功能,但只显示echo内容,而不是显示所有匹配的GID。下面是我的输出。

    elif grep -n $gid /etc/passwd|cut -f4 -d":"
    echo "$gid exist!"
    exit1 
    
1 个评论
旁白:/etc/passwd中gid的存在(或不存在)并不能告诉你GID是否存在或正在使用......在没有联网的系统上,检查/etc/group会更可靠......在联网的系统上,事情变得更加复杂。
linux
bash
grep
Eric Lau Xian Jun
Eric Lau Xian Jun
发布于 2014-09-10
2 个回答
Code-Source
Code-Source
发布于 2014-09-10
0 人赞同

你可以通过使用选项"-o "来简化你的命令,它只打印匹配行中的匹配部分。 你还必须使用正则表达式来确保有正确的GID,而不是部分GID或UID。

grep命令应该是这样的。

grep -o -E "^[^:]+:[^:]*:[0-9]+:$gid:" /etc/passwd

The whole solution would be:

if [ condition ] ; then
    command
elif [ -n `grep -o -E "^[^:]+:[^:]*:[0-9]+:$gid:" /etc/passwd` ] ; then
    echo "$gid exists!"
    exit 1
    
谢谢!但我不需要它,因为我是一个成熟的一年级学生!:)
David C. Rankin
David C. Rankin
发布于 2014-09-10
0 人赞同

The -q option suppresses output:

elif grep -q $gid /etc/passwd
echo "$gid exist!"
exit1 

cut is not needed. Note:这将匹配数字$gidpasswd的任何地方,你可以进一步解析数据,以具体限制你的搜索到gid领域。例子。