我正在尝试从 bash 脚本中删除 case 子句。该子句会有所不同,但始终将反斜杠作为大小写匹配字符串的一部分。
我正在尝试 sed 但可以在 bash 脚本中使用 awk 或 perl one-liner。
编辑的目标很简单,类似于:
$cat t.sh
case N in
a\.b);
#[..etc., varies]
;;
esac
我正在与转义反斜杠、分号或两者的变量扩展发生冲突。如果我“评估”,我会去掉我的反斜杠转义符。如果我不这样做,分号就会赶上我。所以我尝试在 sed 中进行 subshell 扩展。正如我所写的那样,这会使解释器犯规。更多地转义分号似乎无济于事。
X='a\.b' ; Y=';;'
sed -i '/$(echo ${X} | sed -n 's/\\/\\\\/g')/,/$(echo ${Y} | sed -n s/\;/\\;/g')/d t.sh
还有这个:
perl -i.bak -ne 'print unless /${X}/ .. /{$Y}/' t.sh # which empties t.sh
和
eval perl -i.bak -ne \'print unless /${X}/ .. /{$Y}/' t.sh # which does nothing