Grep 打印输入的其余部分以及匹配行
我是linux新手,正在试验基本的终端命令。我发现我可以使用Grep 打印输入的其余部分以及匹配行,grep,Grep,我是linux新手,正在试验基本的终端命令。我发现我可以使用compgen-u列出所有用户,但是如果我只想显示底线输出呢? 好的,假设compgen-u的输出如下: extra extra extra extra extra extra extra extra extra John William Kate Harold 我只能使用grep查找单个文本(例如,compgen-u | grep John)。但是,如果我想使用grep来显示John以及它后面的所有剩余条目,该怎么办?sed或awk
compgen-u
列出所有用户,但是如果我只想显示底线输出呢?
好的,假设compgen-u的输出如下:
extra
extra
extra
extra
extra
extra
extra
extra
extra
John
William
Kate
Harold
我只能使用grep查找单个文本(例如,
compgen-u | grep John
)。但是,如果我想使用grep来显示John以及它后面的所有剩余条目,该怎么办?sed
或awk
解决方案会更简单,但是如果您只能使用grep
,那么在上下文之后的--after context
(或-A
)选项可能会执行以下操作:
grep -A 5 John file
缺点是您需要知道匹配后要显示的行数(或者对文件的其余部分使用任意大的数字)。
compgen-u | grep-A$(compgen-u | wc-l)John
说明:
From man grep
-A NUM, --after-context=NUM
Print NUM lines of trailing context after matching lines. Places a line containing a group separator (described under --group-separator) between
contiguous groups of matches.
您可以使用以下一个衬里:
n=$( compgen -u | grep -n John | head -1 | cut -d ":" -f 1 ) && compgen -u | tail -n +$n
这将找出John第一次出现的行号,并打印从该行开始的所有内容
n=$( compgen -u | grep -n John | head -1 | cut -d ":" -f 1 ) && compgen -u | tail -n +$n