首页 > 解决方案 > 如何删除在unix文件中的两个位置具有两个模式的行

问题描述

我有一个这样的文件。

aabbccde
aaeeffcc
aaffccdf
affdfdfc

我想检查第 2 个位置 = a 和第 7 个位置 = d,是否应该删除该行。

最终输出应该是。

aaeeffcc
affdfdfc

我正在尝试 sed ,但我一次只能检查 1 个位置。

sed  '/^.\{1\}a/d' f1.dat > f2.dat

这将删除在 f1 文件的第二个位置具有“a”的所有行并创建一个新的 f2 文件。

如何通过检查这两个条件来删除该行。位置 2 = "a" 和位置 7 = "d"

标签: shellunixawksed

解决方案


请您尝试以下操作。

awk 'substr($0,2,1)=="a" && substr($0,7,1)=="d"{next} 1' Input_file

第二种解决方案:

awk '!/^.a....d/ '  Input_file

推荐阅读