linux - 我的代码有什么问题,为什么不将大写字母 G 的 "EVERY INSTANCE"替换为 Gb,

标签 linux unix sed

我的代码:

df -h | sed 's/G/Gb/' >> $2

输出:

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              29Gb  5.5G   22G  21% /
devtmpfs              757M  196K  757M   1% /dev
tmpfs                 757M  436K  757M   1% /dev/shm

我需要的输出:

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              29Gb  5.5Gb   22Gb  21% /
devtmpfs              757M  196K  757M   1% /dev
tmpfs                 757M  436K  757M   1% /dev/shm

最佳答案

添加全局标志

df -h | sed 's/G/Gb/g' >> $2

您的原始代码更改了模式的第一个匹配项。在结尾的“/”后添加一个“g”(全局)使其成为全局 - 更改所有匹配的实例。这不会产生意想不到的后果,例如如果任何卷名称包含“G”,那也会更改。

关于linux - 我的代码有什么问题,为什么不将大写字母 G 的 "EVERY INSTANCE"替换为 Gb,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9493805/

相关文章:

linux - bash 中的线程?

php - 错误报告因解析错误而被阻止

linux - 在 grep 匹配模式输出行前面打印文件名

csv - 从一个列表中减去另一个列表的最有效方法是什么?

linux - 如何选择文件的其余部分,不包括 linux 中的某些行?

linux - DPDK 应用程序停止后无法修改大页面大小

python - 我可以从 Python 脚本控制 PSFTP 吗?

linux - 在读取时使用 tail -f 监视文件并执行命令?

c - unix套接字上的连接数

linux - 从用户空间在 Linux 中访问 pci 设备信息