测试文件:
1|2|3|4|Test|6
1|2|3|4|Test|6
1|2|3|4|5|6
1|2|3|4|Test|6
1|Test|3|4|5|6
1|2|3|4|5|6
1|2|3|4|Test|6
1|2|3|4|5|6
输出应在删除后:
1|2|3|4|5|6
1|Test|3|4|5|6
1|2|3|4|5|6
1|2|3|4|5|6
答案 0 :(得分:1)
使用awk
awk -F“ |” '$ 5!=“测试” {print $ 0}'测试文件
答案 1 :(得分:1)
尝试-
awk -F"|" '$5 ~ /[[:digit:]]/' file.txt
1|2|3|4|5|6
1|Test|3|4|5|6
1|2|3|4|5|6
1|2|3|4|5|6
说明-
F'|'
:设置“ |”作为字段分隔符$5 ~ /[[:digit:]]/
:检查第5列是否包含数字。答案 2 :(得分:0)
sed -E '/([^|]*\|){4}Test/d' testfile
1|2|3|4|5|6
1|Test|3|4|5|6
1|2|3|4|5|6
1|2|3|4|5|6
答案 3 :(得分:0)
您也可以直接将grep
与合适的正则表达式一起使用:
grep -v -e '^\([^\|]*[\|]\)\{4\}Test[\|]' testfile
在模式[^\|]*
中,表示|以外的任何字符。匹配任意次数(即,匹配不带“ |”的字符串)。其后跟[\|]
,它告诉grep匹配后面的“ |”。因此,总共[^\|]*[\|]
匹配“ ... |”之类的东西。该表达式用\(
\)
括起来,后跟\{4\}
表示重复4次。之后,出现所需的字符串Test
,后跟[\|]
,这意味着匹配单个字符“ |”。最后,在正则表达式开始处的字符^
选择以以下模式开头的行,而-v
打印出不匹配的行。