如何使用正则表达式(bash)为变量赋值?

如何使用正则表达式(bash)为变量赋值?

我想在 bash 中的变量赋值行使用正则表达式

例如

oldip="14\.130\.31\.172"
oldip_a="14.130.31.172" << How to use regex to del all '\'? and assign to oldip_a

你有什么主意吗?

答案1

要删除\,请使用 bash 参数替换。
//意思是替换全部...(单个/表示仅替换第一个)
//\\表示替换所有\(反斜杠)字符
/}表示不替换任何内容(/和结束之间没有任何内容)}

ip="14\.130\.31\.172"
echo "${ip//\\/}"

输出

14.130.31.172

或者,如果\.在具有许多此类 IP 地址的文件中需要执行多次操作,则可以将每个修改值分配给一个数组项。

ip=($(printf '
172.31.130.14
14\.130\.31\.172
33\.135\.220\.0
' | sed 's/\\//g'))
for ((i=0;i<${#ip[@]};i++));do
  echo "${ip[i]}"
done

输出

172.31.130.14
14.130.31.172
33.135.220.0

?! ..我刚刚注意到你的第二个数据项是第一个数据项的反转..这是你想要的输出吗? (可能不是,但这让我想知道)..

相关内容