如何使用bash删除十进制数字intext文件

如何使用bash删除十进制数字intext文件

有这样的文本文件

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

相关内容