在我的公司的样式指南中规定,bash脚本不能超过80行。所以我有一个巨大的sed替换,长度是两倍以上。我该如何将它分成更多行,使其仍然能够正常工作?我有:
sed -i s/AAAAA...AAA/BBBBB...BBB/g
我想要类似这样的东西。
sed -i s/AAAAA...AAA/
BBBBB...BBB/g
仍然产生相同的效果。
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'
sed
。 - Burhan Khalid使用 shell 连续字符,通常为 \
。
[~]$ foo \
> and \
> bar
不需要空格:
[~]$ foo\
> and\
> bar\
> zoo\
> no space\
> whee!\
只需在换行符前插入反斜杠字符:
sed -i s/AAAAA...AAA/\
BBBBB...BBB/g
awk
很容易实现。 - jordanm