gpt4 book ai didi

linux - 使用 sed 用 0's (zero' s 填充空白)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:24 24 4
gpt4 key购买 nike

有谁知道用 0 替换空格的方法吗?这就是我想要做的......基本上我有一个脚本可以提取一个 IP 地址并操纵该地址以从中生成一个端口号。

192.168.202.3 = Port 23

我需要的是一个足够智能的 sed 命令,可以在 3 前面添加 2 个 0,使其成为一个完整的值。

192.168.202.3 = Port 2003

或:

192.168.202.003 = Port 2003

要注意的是,如果数字已经存在,那么我不希望它添加 0..

192.168.202.254 = Port 2254

代替:

192.168.202.254 = Port 200254

有什么想法吗?

脚本的相关部分:

# Retrieve local-ipv4 address from meta-data
GET http://169.254.169.254/latest/meta-data/local-ipv4 > /metadata

# Create a manipulated version of ipv4 to use as a port number
sed "s/192.168.20//" /metadata > /metaport
sed -i "s/\.//g" /metaport

如果您有不使用 sed 的其他方式,我也欢迎这些建议!!

谢谢!

最佳答案

我更喜欢使用 awk 而不是 sed

awk -F'.' '{printf "%03s%03s\n", $3, $4}' /metadata | cut -c3-6 > /metaport

输入IP:

192.168.202.3
192.168.202.23
192.168.202.254

输出端口:

2003
3023
2254

编辑

更简洁的 awk 唯一解决方案避免了 cut(由 Jonathan Leffler 建议)

awk -F'.' '{printf "%d%03d\n", $3 % 10, $4}' /metadata > /metaport

关于linux - 使用 sed 用 0's (zero' s 填充空白),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19161845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com