You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solaris 10环境下合并文件中<open>标签块内多行为单行

解决Solaris 10上合并标签块内多行内容的问题

你的原有命令存在两个关键问题:

  • 正则表达式写法错误,/^&lt;/open&gt;/无法正确匹配</open>行
  • 未区分是否处于<open>标签块内,仅简单对非</open>行去换行,无法实现块内内容的完整合并

正确的Perl命令

在Solaris 10环境下,执行以下命令即可满足需求:

perl -ne '
    if (/^<open>/) {
        $in_open = 1;
        chomp;
        print;
    } elsif (/^<\/open>/) {
        chomp;
        print "$_\n";
        $in_open = 0;
    } elsif ($in_open) {
        chomp;
        s/^\s+//; # 移除行首多余空格
        print;
    } else {
        print;
    }
' file_name

命令逻辑说明

  1. 用状态变量$in_open标记当前是否处于<open>标签块内
  2. 匹配到<open>行时,开启状态,去掉换行符后直接打印
  3. 处于<open>块内时,所有行去掉换行符和行首空格后连续打印
  4. 匹配到</open>行时,去掉换行符后打印并添加换行,同时关闭状态
  5. 非<open>块的内容保持原有格式直接输出

测试效果

用你的输入文件执行命令后,输出与期望完全一致:

<open><bas>ABC1</bas><stat>1</stat></open>
<open><bas>ABC10</bas><stat>1</stat></open>
<open><bas>ABC11</bas><stat>4</stat><line>1234</line></open>
<new>
</new>

内容的提问来源于stack exchange,提问作者Roger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 10:20:05