如何使用bash为目录下所有txt文件每行第一列减去常数1
解决方案
单文件测试
先执行以下命令验证输出是否符合预期,不会修改原文件:
awk '{$1 = $1 - 1; print}' axk.txt
验证输出和你需要的结果一致后,再执行批量修改操作。
批量修改(Linux 环境,GNU Awk 可用)
当前目录下所有txt文件直接原地修改,一行搞定:
awk -i inplace '{$1 = $1 - 1; print}' *.txt
兼容全平台(Linux/macOS/BSD 通用)
如果系统自带的awk不支持inplace参数,用循环配合临时文件实现批量修改:
for f in *.txt; do awk '{$1 = $1 - 1; print}' "$f" > "$f.tmp" && mv "$f.tmp" "$f" done
说明
- awk默认按任意空白符(空格、制表符等)分割字段,
$1对应每行第一个元素,直接做减法运算即可 - 通用方案里用
&& mv保证只有awk处理成功才会覆盖原文件,避免文件损坏
内容的提问来源于stack exchange,提问作者Ffiirree
相关产品推荐
相关产品推荐

