我试图仅使用 grep从history
命令的输出中获取第二个字。到目前为止,我有正则表达式:
[^\d\s](\w+)
相同的输入:
10004 history --help
10005 history -h
10006 man history
10007 history
10008 sort history | uniq -c
10009 history | sort | uniq -c
10010 history | sort
10011 PATH
10012 compgen -c
10013 compgroups
10014 compgroups -a
10015 whence -pm '*'
10016 history | grep -Eo '^[^ ]+'
选择数字后的所有内容,以及第二个单词后面的所有内容(本例中为命令)。
如何根据我的要求对其进行微调?
答案 0 :(得分:1)
答案 1 :(得分:1)
尝试
$ history | grep -oP '^\s*\d+\s*\K[^ ]+'
这使用-P
选项来使用pcre
,因为需要正面的后卫
^\s*\d+\s*\K
表示行首处的任何空格,后跟数字和任何空格 - 不是输出的一部分[^ ]+
提取空格以外的字符串,因此在提出问题时获得第二个word