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

标签 bash awk grep

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

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

使用 grep 或类似工具我想选择所有不以“244”开头的连续剧 我可以使用 grep -Eo '244-[0-9]*' serials.txt 选择所有“244”,但我想要相反的结果。
类似于 grep -Eo '(^244)-[0-9]*' serials.txt

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

175-1915011190
335-1920101144

最佳答案

遵循 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

关于bash - grep序列号不以特定前缀开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48081872/

相关文章:

bash - 在 awk 中使用多个分隔符

linux - 切片数据的正确方法

linux - 在 shell 中以其他用户身份运行时无法初始化变量

linux - 在 SunOS 中使用哪个命令相当于 linux 中的 zgrep

perl - 在文件中的文本段落中删除\n

awk - sed 查找正则表达式模式,然后查找下一个正则表达式模式(可变多行)并替换

Regex/awk/etc 用于扫描我的源代码以进行翻译

regex - egrep 不删除特殊字符

linux - 我的 Mac 终端中的名称已关闭

linux - 仅杀死特定 Java jar 的进程(实例)