shell - 如何删除在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"
解决方案
请您尝试以下操作。
awk 'substr($0,2,1)=="a" && substr($0,7,1)=="d"{next} 1' Input_file
第二种解决方案:
awk '!/^.a....d/ ' Input_file
推荐阅读
- ios - 与多个委托同步并调用函数进行更新
- python - 如何使用从 python 到 javascript 的数组?姜戈
- android - 在片段中重新创建视图
- ethereum - 尝试为pancakeswap做一个简单的swap合约,每次gas估计都会出错
- html - 滚动时如何修复元素
- python - 更新后如何让 pip 可靠地安装软件包?
- sorting - karate.sort 函数抛出 TypeError: karate.sort is not a function in
在第 1 行错误 - android - RecyclerView 适配器上的一个 Map 和两个 List
- python - Flask, Not Found 在服务器上找不到请求的 URL
- asp.net-mvc - 验证/授权从移动应用程序到 Web 应用程序的请求