【发布时间】:2018-02-24 10:32:23
【问题描述】:
我有一个 F5 bigip.conf 文本文件,我想在其中将所有显示“10.166.201”的行的路由域从 701 更改为 703。路由域由%701表示
10.166.201.10%701
10.166.201.15%701
10.166.201.117%701
我可以用 bash 做到这一点,但问题是“else printf”命令(我也尝试过 echo),它应该打印出所有其他行,错误地解析了诸如“\r\n”之类的东西" 并将它们保留为 "rn"
#!/bin/bash
while read line
do
if [[ $line = *"10.166.201"* ]];
then
printf '%s\n' "$line" | sed -e 's/701/703/'
else printf '%s\n' "$line"
fi
done < bigip.conf > bigip.conf_updated
有没有办法阻止 printf 和 echo 修改“\r\n”?
在 sed/awk 中有没有更好的方法来做到这一点?
谢谢。
【问题讨论】:
-
哦,伙计,您的 Input_file 中也有
\r,如果您想删除它们,那么我在帖子中也添加了该解决方案。