5

在我的公司风格指南中,它说 bash 脚本不能超过 80 行。所以我有这个巨大的 sed 替换超过两倍的时间。我怎样才能把它分成更多的行以便它仍然有效?我有

sed -i s/AAAAA...AAA/BBBBB...BBB/g

我想要类似的东西

sed -i s/AAAAA...AAA/
BBBBB...BBB/g

仍然具有相同的效果。

4

3 回答 3

8

可能的清理方法

1)将您的 sed 脚本放入文件中

sed -f script [file ...]

2)使用正则表达式速记

sed 's!A\{30,\}!BBBBB...BBBB!g'

3) 使用 Bash 变量来帮助分解它

regex="AAAA.AAAAAA"
replace="BBBB...BBBBBBB"
sed "s/${regex}/${replace}/g"

什么不能做

1)转义换行符以将其分成多行。

你最终会在你的 sed 脚本中得到一个你不想要的换行符。

sed 's/THIS IS WRONG /\
AND WILL BREAK YOUR SCRIPT/g'
于 2012-08-07T01:44:46.917 回答
1

使用 shell 连续字符,通常是\.

[~]$ foo \
> and \
> bar

不需要空间:

[~]$ foo\
> and\
> bar\
> zoo\
> no space\
> whee!\
于 2012-08-07T01:38:34.130 回答
0

只需在换行符之前插入反斜杠字符:

sed -i s/AAAAA...AAA/\
BBBBB...BBB/g
于 2012-08-07T01:38:48.000 回答