我想在特定位置查找和删除所有具有特定字符串,特定长度的行。
我的数据集中的一行看起来像这样:
STRING 1234567 1234567 7654321 6543217 5432176
笔记:
条目的字段宽度为8
识别码可以在同一行中重复
标识号可以在不同的行上重复,但可以在不同的位置重复-不应删除这些行
在此示例中,我要查找位于第17列并跨越到第24列(即第三个字段)的包含“ 1234567”的行并将其删除。如何使用sed或awk执行此操作?
我使用了以下内容,但它删除了我要保留的行:
sed -i '/1234567/d' ./file_name.dat
干杯!
您可以使用
sed -i '/^.\{17\}1234567/d' ./file_name.dat
细节
^
-一行的开始.{17}
-任何17个字符1234567
-子字符串。参见在线sed
演示:
s="STRING 1234567 1234567 7654321 6543217 5432176
STRING 1234567 5534567 7654321 6543217 5432176"
sed '/^.\{17\}1234567/d' <<< "$s"
# => STRING 1234567 5534567 7654321 6543217 5432176
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句