我有一个包含12列数据的文件。如果列5等于“A”,列12等于“Z”,我想删除/删除整行。这可能使用SED吗?使用SED删除有多个字段匹配的行
1
A
回答
2
您可以。假设您的列用空格分隔:
sed -i -e '/\([^ ]* *\)\{4\}A *\([^ ]* *\)\{6\}Z/d' file
的-i
标志用于编辑文件的地方。
[^ ]* *
模式匹配零个或多个(由星号表示)字符,它们不是空格(由括号中的^
后面的空格字符指示),后跟零个或多个空格。将这个模式放在反斜杠括号之间,我们可以将它分组到单个表达式中,然后我们可以使用反斜杠来重复表达式。最初四次,然后匹配一个A
后跟空格,然后该模式再次重复六次,然后是Z
。
希望这有助于=)
2
你可以用sed
做到这一点,但它与awk
容易得多:
awk '! ($5 == "A" && $12 == "Z")' input-file
或
awk '$5 != "A" || $12 != "Z"' input-file
0
perl -F -ane 'print unless($F[4] eq "A" and $F[11] eq "Z") your_file
如下测试:
> cat temp
1 2 3 4 5 6 7 8 9 10 11 12
1 2 3 4 A 6 7 8 9 10 11 Z
> perl -F -ane 'print unless($F[4] eq "A" and $F[11] eq "Z")' temp
1 2 3 4 5 6 7 8 9 10 11 12
>
相关问题
- 1. 删除匹配行的sed
- 2. 删除使用sed匹配多个模式的行
- 3. 使用sed删除多行
- 4. 使用sed删除包含多个字符串的所有行
- 5. 你可以使用sed删除匹配,只有某些行后?
- 6. 删除不匹配SED
- 7. SED删除匹配和下一行
- 8. sed - 删除除匹配模式以外的所有行
- 9. sed删除多行
- 10. awk/sed/grep删除与其他文件中的字段匹配的行
- 11. PHP - 有多个字的字段匹配
- 12. 匹配后的字符串的一部分删除,但使用都不行SED
- 13. SED删除两个模式匹配之间的行
- 14. 在两个方向删除n行和sed中的匹配?
- 15. 如何用SED删除多个空行?
- 16. 如何从使用sed的匹配开始的文件中删除所有行?
- 17. sed多行范围匹配
- 18. 使用sed匹配第5个字段中的文本
- 19. 如何使用sed删除匹配的行,上面的行和下面的行?
- 20. 删除文件中匹配一个字符串但不匹配另一个字符串的行 - SED,BASH?
- 21. 在与sed匹配前删除所有行
- 22. 删除除匹配花样行最佳实践(sed)之外的所有行
- 23. Os X 10.9使用sed删除多个文件中的多行
- 24. 使用sed批量删除多个文件中的多行
- 25. 用于匹配具有匹配第一个字段的行的命令行(sed,awk等)
- 26. 删除行,如果所有字段匹配特定模式
- 27. 删除字符使用sed
- 28. 使用sed删除cruft行
- 29. 如何使用sed删除所有行,直到第一列匹配为止?
- 30. ElasticSearch匹配多个字段
你能用一个数据样本更新你的问题吗?如何定义“列”? – choroba
你只是要求sed,还是一般使用unix工具? – johv