bash从文本行中提取字符串

时间:2014-07-30 17:10:27

标签: regex bash grep echo

我需要提取一行中可能出现的序列号。序列号始终具有以下正则表达式格式:

S[XN]00-[0-9]{3}

输出:

SX00-123

我只想echo这个。我可以grep序列号,并考虑使用正则表达式但不确定如何。

1 个答案:

答案 0 :(得分:5)

您可以尝试grep

grep -oE 'S[XN]00-[0-9]{3}' file

来自grep --help

-E, --extended-regexp     PATTERN is an extended regular expression (ERE)
-o, --only-matching       show only the part of a line matching PATTERN

示例:

$ cat test.txt 
randomtextSX00-456
SX00-164randomtext
randomtextSX00-184randomtext
SX00-986
randomtext

$ grep -oE 'S[XN]00-[0-9]{3}' test.txt 
SX00-456
SX00-164
SX00-184
SX00-986