如何使用SED删除文件倒数第二行末尾的逗号?
用sed删除文件倒数第二行末尾的逗号
纯sed通用方案(无需提前统计行数)
直接执行以下命令可预览修改效果:
sed '$!{N;$s/,$//;P;D}' your_file
如果要直接修改文件内容,加上-i参数:
sed -i '$!{N;$s/,$//;P;D}' your_file
命令逻辑说明:
$!{...}:仅对非最后一行执行花括号内的操作N:把下一行内容追加到当前模式空间(临时将两行合并处理)$s/,$//:当处理到最后一行时,模式空间内是倒数第二行+最后一行,此时替换掉倒数第二行末尾的逗号P:打印模式空间里的第一行内容D:删除模式空间里的第一行,重新进入循环处理剩余内容
基于行数的方案(快速定位)
先通过wc -l获取文件总行数,再定位到倒数第二行修改:
sed -i "$(($(wc -l < your_file)-1))s/,$//" your_file
命令逻辑说明:
wc -l < your_file:统计文件的总行数$(($(...)-1)):计算出倒数第二行的行号行号s/,$//:对指定行的末尾逗号进行删除替换
效果对比
原文件内容:
} "user-account-id": "John", "user-account-number": "v1001", "user-account-app": "v10.0.0", "user-account-dbase": "v10.1.0", }
修改后内容:
} "user-account-id": "John", "user-account-number": "v1001", "user-account-app": "v10.0.0", "user-account-dbase": "v10.1.0" }
内容的提问来源于stack exchange,提问作者khal-el
相关产品推荐
相关产品推荐

