Linux shell脚本删除文件中的特定内容

Linux shell脚本删除文件中的特定内容

我有一个名为 abc.csv 的文件,其格式为:

aa,size:12
bb,size:13
cc,size:3

我想删除 size: ,文件就会变成这样:

aa,12
bb,13
cc,3

谁能告诉我如何使用 shell 脚本来执行此任务?

答案1

您可以sed轻松地使用此任务:

sed -i -- 's/size://' abc.csv

s/size://是一个简单的正则表达式,表示替换size:<blank>

答案2

下面是一个有用的替代命令,适用于 sed 版本不支持该-i标志的 Unix 用户(例如 Solaris,以及sed默认情况下随 BSD 附带的 OS X)。

sed 's/size://' abc.csv > tmpfile; mv tmpfile abc.csv

g在您的特定示例中,不需要 sed 命令末尾的选项,因为“size:”每行不会出现多次。

编辑: 对于较小的文件,您还可以将更新的内容存储在变量中,以避免创建不必要的临时文件:

new="$(sed 's/size://' abc.csv)"; echo "$new" > abc.csv

这个方法也将允许能力"$new"在覆盖原始文件之前将变量(更新的文件)回显到 STDOUT 以进行完整性检查。

相关内容