【发布时间】:2026-01-04 14:50:01
【问题描述】:
我正在努力在 groovy 脚本上实现 sed 范围模式命令。
这就是我尝试在 groovy 脚本中实现命令的方式:
def range = sed -n -e /Word A/,/Word D/ p
def result = cat sample.txt | range.execute()
这是 sample.txt 文件的内容:
Word A
Word B
Word C
Word D
Word E
Word F
这是我想要的输出:
Word A
Word B
Word C
Word D
现在,当我运行它时返回给我的错误是:
sed: unmatched '/'
我相信我收到此错误的原因是因为在实际的 sed 命令中,我需要以某种方式将范围模式完全分组,因为我觉得并且实际上我已经测试过了,sed 命令仅适用于第一个范围,即“WORD A”,然后它将下一个“/”读取为文字字符,而不是封装下一个模式的字符,即 WORD D。
我尝试使用单引号和双引号,但是在运行我的脚本时,我收到一条错误消息:sed unmatched "'" or sed unknown command。
最终,我需要以某种方式在 groovy 脚本中说出以下内容:
sed -n -e (/Word A/,/Word D/ p)
有人可以帮忙解决这个问题吗,因为我花了两天时间才解决这个问题。
谢谢!
【问题讨论】:
-
您是否只是想产生
"Word"后跟一个范围内的字母? -
@ernest_k,我不太清楚你的意思。我想返回单词 A 和单词 D 之间的单词列表
-
好吧,如果你只想生成它,那么你可以使用
('A'..'D').collect{"Word $it"}.join("\n"),然后将结果保存到文件中...... -
是收集java方法吗? $it 是什么?