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

PowerShell提取parallel代码块内容并移除外层结构需求

移除parallel外层结构保留内部内容的处理方案

原始输入内容

parallel (

   {
 
       some content 1
       some content 2
       build ( 'Job3', parameter5: value5)
       some content 3
       some content 4

   }

)

parallel (

{ 

       some content 5
       some content 6
       build ( 'Job2', parameter3: value3, parameter4: value4)
   }

)


build ( 'Job1', parameter1: value1, parameter2: value2)

预期输出内容

some content 1
some content 2
build ( 'Job3', parameter5: value5)
some content 3
some content 4
some content 5
some content 6
build ( 'Job2', parameter3: value3, parameter4: value4)
build ( 'Job1', parameter1: value1, parameter2: value2)

处理方案

方法1:用awk脚本批量处理

写个简单的awk脚本就能搞定,步骤如下:

  1. 创建名为process_parallel.awk的文件,内容如下:
BEGIN { in_parallel = 0; in_block = 0 }
/^parallel \(/{ in_parallel = 1; next }
/^\)/{ if (in_parallel) { in_parallel = 0; next } }
/^\{/{ if (in_parallel) { in_block = 1; next } }
/^\}/{ if (in_parallel && in_block) { in_block = 0; next } }
{
    if (in_parallel && in_block) {
        sub(/^[[:space:]]+/, ""); print
    } else if (!in_parallel) {
        print
    }
}
  1. 执行命令处理你的输入文件(假设输入文件叫input.txt):
awk -f process_parallel.awk input.txt > output.txt

这个脚本逻辑很直白:

  • 标记是否进入parallel块和内部大括号区域
  • 跳过所有外层的parallel (、)、{、}符号
  • 自动去掉parallel内部内容的开头缩进后输出
  • 直接保留并输出不在parallel块里的代码

方法2:用sed命令快速处理

如果不想写脚本,也可以用sed的多行匹配命令一次性处理:

# 先提取parallel块内的内容并去除缩进
sed -n '/^parallel (/ { :loop; N; /)/!bloop; s/parallel (\n*{\n*\(.*\)\n*}\n*)/\1/g; s/^[[:space:]]*//mg; p }' input.txt > temp.txt
# 再追加不在parallel块里的内容
sed -n '/^parallel (/!{/^)/!p}' input.txt >> temp.txt
# 最后整理多余空行(可选)
awk 'NF || prev {print; prev=NF}' temp.txt > output.txt
rm temp.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:32:51