我有一个名为in.txt的文件,其中包含大量代码,但是我需要提取一个用户ID,该ID保证为EID:nmb685'形式,可能含有以前的内容和/或保证格式之后。我想提取' nmb685'使用bash脚本。我尝试了一些grep和sed的组合,但没有任何效果。
答案 0 :(得分:0)
如果你的grep支持-P
,perl-regexp参数,你可以使用它。
grep -oP 'EID:\K\w+' file
答案 1 :(得分:0)
身份证后输出的内容是什么?你有什么一致可以匹配吗?
如果您知道可以使用的用户ID的长度:
grep "EID:......" in.txt > out.txt
或者如果你不喜欢这样的东西(检查所有char / num后跟空格,前面是EID:)
grep "EID:[A-Za-z0-9]* " in.txt > out.txt
答案 2 :(得分:0)
不是很优雅,但这很有效:
grep "EID:" in.txt | sed 's/\(.*\EID:......\).*/\1/g' | sed 's/^.*EID://'
答案 3 :(得分:0)
如果您的grep不支持-p
但支持-o
,则可以将grep和awk结合使用。
grep -o 'EID:\w\+' file|awk -F':' '{print $2}'
虽然可以单独用awk完成,但这更简单。