技术求助:如何使用awk删除以‘/’结尾的行?
AWK删除以‘/’结尾行的正确方法
原始数据
COL1 COL2 PRE test1/ PRE test1/ PRE test1/ 2023-01-27 12:37:16 2023-01-27 12:37:16 2023-01-27 12:37:16 2023-01-27 12:37:16 2023-01-27 12:37:16
需求与问题
需要删除所有以/结尾的行,尝试了命令awk '{gsub("*/","",$0); print $1 $2}'但没有效果。
正确实现方法
方法1:判断最后一个字段是否以/结尾
如果目标行是靠最后一个字段结尾带/,这个命令最准确:
awk '$NF !~ /\/$/' your_file.txt
- 逻辑:
$NF代表当前行的最后一个字段,!~表示不匹配指定正则,\/$是正则表达式,匹配以/结尾的内容。只有不满足这个条件的行才会被打印,自动过滤掉目标行。
方法2:判断整行是否以/结尾
如果行结尾直接是/、无后续空格,可用更简洁的命令:
awk '!/\/$/' your_file.txt
- 逻辑:
!/\/$/表示整行内容不匹配“以/结尾”的正则,符合条件的行直接输出。
原命令无效原因
你之前用的gsub("*/","",$0)是尝试替换行内的*/为空,但目标行里是test1/,根本没有*/这个组合;而且该操作仅修改内容、不会删除行,所以即使替换成功也会输出处理后的行,完全达不到删除目标行的效果。
内容的提问来源于stack exchange,提问作者Orion
相关产品推荐
相关产品推荐

