Linux下如何将带管道的双awk数据过滤命令简化为单条语句
单条awk语句实现方案
最终可用命令
你可以直接使用以下任意一条命令实现需求,无需额外管道:
写法1(split分割实现)
awk '!/^N/ && $2 ~ /klm/ {split($2, arr, ":"); print arr[1]}' file
写法2(字符替换实现)
awk '!/^N/ && $2 ~ /klm/ {sub(/:.*/, "", $2); print $2}' file
逻辑说明
- 条件
!/^N/:过滤所有以N开头的行,直接排除N/A无效行 - 条件
$2 ~ /klm/:仅处理第二个字段包含klm的行,同时自动过滤掉前两行无意义表头 - 两种处理逻辑效果一致:
- split写法:将第二个字段按冒号分割为数组,取第一个元素输出即为目标域名
- 替换写法:将第二个字段中冒号及后面的所有内容清空,直接输出处理后的第二个字段即可
内容的提问来源于stack exchange,提问作者user2023
相关产品推荐
相关产品推荐

