我想在特定位置查找并删除具有特定字符串,特定长度的所有行。
数据集中的一行看起来像这样:
STRING 1234567 1234567 7654321 6543217 5432176
注意:
条目的字段宽度为8
标识号可以在同一行中重复
标识号可以在不同的行上重复,但可以在不同的位置重复-不应删除这些行
在此示例中,我想找到位于第17列并跨越到第24列(即第三个字段)的包含“ 1234567”的行并将其删除。我该如何使用sed或awk?
我使用了以下内容,但它删除了我要保留的行:
sed -i '/1234567/d' ./file_name.dat
干杯!
答案 0 :(得分:1)
您可以使用
sed -i '/^.\{17\}1234567/d' ./file_name.dat
详细信息
^
-一行的开头.{17}
-任意17个字符1234567
-子字符串。请参见online sed
demo:
s="STRING 1234567 1234567 7654321 6543217 5432176
STRING 1234567 5534567 7654321 6543217 5432176"
sed '/^.\{17\}1234567/d' <<< "$s"
# => STRING 1234567 5534567 7654321 6543217 5432176
答案 1 :(得分:0)
使用var LTLimit = from a in dbavailability.tACLicenseTypes
where a.License_Type == "Long Term"
select a.Limit;
string AST = "";
,打印除子串匹配以外的行。
awk
或者说逆逻辑更容易
$ awk 'substr($0,17,7)=="1234567"{next}1' file > output_file