我的代码有什么问题,为什么它不用 GB 替换大写字母 G 的 "EVERY INSTANCE",



我的代码:

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",也会更改。

这将把M转换为Mb,把K转换为Kb:

df -lh | perl -pe 's/([0-9])(G)( )/1Gb3/g; s/([0-9])(M)( )/1Mb3/g; s/([0-9])(K)( )/1Kb3/g'

最新更新