我是bash的新手,面对的情况是我需要解析一个巨大的文件,但并非一切对我来说都很有趣。该文件包含由'。'分隔的数据列表。分隔符,列数因行而异。
我想从输出中排除以下模式:如果前4列包含数字。
这是一个例子(只有第一行应从输出中排除):
123.123.123.123.abc.abc.abc
123.123.123.abc.abc
abc.abc.123.123.abc
我已经使用awk寻找了一些解决方案,但到目前为止还没有成功。
提前感谢您的帮助。
答案 0 :(得分:1)
grep 解决方案:
grep -Ev '^([0-9]+\.){4}' file
输出:
123.123.123.abc.abc
abc.abc.123.123.abc
答案 1 :(得分:0)
请您试着跟随并告诉我这是否对您有帮助。
awk -F"." 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/){next} 1' Input_file
输出如下。
123.123.123.abc.abc
abc.abc.123.123.abc
说明:将字段分隔符设置为DOT(。),然后使用awk的匹配功能并查找连续的4个字段,其中包含数字,如果是,则使用next(将跳过所有进一步的陈述)。然后在这里提到1打印除了具有匹配模式的线之外的线。
答案 2 :(得分:0)
在awk中你可以使用两个小于或等于这样的替代方案:
awk -F. 'NF<6' file or
awk -F. 'NF==5' file
123.123.123.abc.abc
abc.abc.123.123.abc