grep序列号不以特定前缀开头

时间:2018-01-03 17:01:56

标签: bash awk grep

我有这个包含序列号的文件(serials.txt):

S/N:175-1915011190
S/N:244-1920023447
S/N:335-1920101144
S/N:244-1920101149

使用grep或类似工具,我想选择所有不以' 244'开头的序列号。 我可以选择所有的ô' 244'与grep -Eo '244-[0-9]*' serials.txt但我想要相反 像grep -Eo '(^244)-[0-9]*' serials.txt

这样的东西

输出应该是(没有S / N :)

175-1915011190
335-1920101144

4 个答案:

答案 0 :(得分:1)

关注awk可能对您有帮助。

awk '!/S\/N:244/'   Input_file

编辑: 如果您需要从序列号开始直到输出结束,上面的代码将提供完整的输出行,然后以下内容可以帮助您。

awk -F':' '!/S\/N:244/{print $2}'   Input_file

EDIT2: 此处也添加sed解决方案。

sed -n '/:244/d;s/.*://;p'   Input_file

答案 1 :(得分:1)

grep上的-v选项在这里会有所帮助,然后cut删除主要内容:

grep -v ':244-' serials.txt | cut -c5-

答案 2 :(得分:1)

在这里,没有S / N:

grep -v ':244' serials.txt | cut -d':' -f2

Antigrep:244,带分隔符的剪切:显示字段2。

答案 3 :(得分:0)

awk -F':' '$2!~/^244/{print $2}' file