有这样的文本文件
172.16.0.30,42056.0
172.16.0.30,42058.0
172.16.0.30,42060.0
我想删除要输出的端口的十进制数,例如
172.16.0.30,42056
172.16.0.30,42058
172.16.0.30,42060
我怎样才能做到这一点?
答案1
如果端口上的小数都是固定长度的,则可以使用以下内容,从这个答案
echo ${line%%??}
其中 的数量?
对应于要删除的固定字符数
或者,您可以使用:
echo ${line%.*}
从这个 bash 参考,%
办法:
从 $string 后面删除 $substring 的最短匹配
我知道它说的是“最短”,但即使使用具有较小八位字节和较长端口十进制的 IP(例如 1.1.1.1,42056.0000),我也没有遇到问题。
要迭代您的文件,您可以使用以下命令(由第一个搜索结果在 DuckDuckGo 中)
while IFS= read -r line; do echo $line; done < input_file
使用上述内容并将结果添加到新文件中,一种方法如下所示
while IFS= read -r line; do echo ${line%.*} >> trimmed_file; done < input_file