使用awk命令处理job_details文件:生成指定格式的列拼接输出
AWK实现路径拼接解决方案
问题说明
输入文件job_details内容如下(首行为表头):
COL_1,COL_2,Col_3,Col_4,Col_5 1,t_test_job1,task,,2,/process/jobs 2,t_test_job2,mapping,1,/process/jobs 3,t_test_job3,mapping,1,/process/jobs
期望输出:
/process/jobs/test_job1,/process/jobs/test_job2,/process/jobs/test_job3
需求:跳过表头,将Col_5字段与去除前缀"t_"后的COL_2字段拼接,最终用逗号分隔所有结果并输出单行。
AWK解决方案
使用以下AWK命令即可实现需求:
awk -F ',' ' NR > 1 { sub(/^t_/, "", $2) path = $NF "/" $2 paths[++n] = path } END { for (i=1; i<=n; i++) { printf "%s%s", paths[i], (i<n ? "," : "") } print "" }' job_details
脚本解释
-F ',':指定逗号作为字段分隔符,确保AWK正确拆分每行的各个列NR > 1:NR代表当前处理的行号,该条件用于跳过第一行表头内容sub(/^t_/, "", $2):调用AWK的sub函数,匹配$2字段开头的"t_"前缀并替换为空,实现去除前缀的效果path = $NF "/" $2:$NF是AWK内置变量,表示当前行的最后一个字段(即需求中的Col_5),与处理后的COL_2字段拼接成目标路径END代码块:所有行处理完成后执行此部分,遍历存储所有路径的数组,用逗号连接每个元素,最后输出换行符保证输出格式完整
内容的提问来源于stack exchange,提问作者Vk K
相关产品推荐
相关产品推荐

