【发布时间】:2023-03-25 11:45:01
【问题描述】:
我正在编写一个脚本来转换一些代码。我有一个执行正确转换的 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 --版本 GNU sed 4.2.1 版
【问题讨论】:
-
我认为您的
[A-z]范围应该是[A-Za-z]?
标签: sed