我正在编写一个脚本来转换一些代码。我有一个执行正确转换的 sed 命令,但是我需要使用 -n 命令来防止自动打印图案空间以抑制双重打印。然而,这会阻止打印我想要输出的任何其他行。这是我正在使用的脚本。
sed -i -r 's/^[ ]*Class[(]"(I((.([A-Za-z]+)))+)"[ ]*,[ ]*(I((.[A-z]+)+)),[ ]*\{/ class \4 extends \5 { /p
/^[ ]*Class[(]"(I((.([A-Za-z]+)))+)"[ ]*,/ {
N
s/ *\n/ /
s/^[ ]*Class[(]"(I((.([A-Za-z]+)))+)"[ ]*,[ ]*(I((.[A-z]+)+)),[ ]*\{*/ class \4 extends \5 { \
/p
}
'
可以在此处找到测试输入文件: https ://www.dropbox.com/s/h9vly1hwtqtl8te/TestText.txt 在脚本中有/没有 -n 开关的两个不同结果可以在这里找到:https:// /www.dropbox.com/s/f0g8horafwial1x/TestText.txt.ts_result1.txt 和这里:https://www.dropbox.com/s/ekualxj7foapgml/TestText.txt.ts_result2.txt 在这里找到所需的结果:https://www.dropbox.com/s/3510oh899fh0ji2/TestText.txt.ts_resultdesired.txt
是否有可能获得想要的结果?
我正在运行 $ sed --version GNU sed 版本 4.2.1