SED:在重复删除代码时使用字符作为变量

时间:2015-01-19 23:37:17

标签: sed

我需要使用文本文件每行中包含的数字作为该行上重复删除任务的变量。

具体来说,每行; (1)要选择的数字的START的列位置是已知的,但不是结束。即它可以是任何数字长度,但是以空格结束。 (2)取这个数字并在整行重复删除任务中使用它。我想删除foo和bar之间的所有文本,类似于 foo。* bar (1)中给出的次数。 foo和bar成对重复(foo优先)(1)中的次数,并且每行可以不同。

有人知道如何使用SED做到这一点。通过SED,敏锐地想要一种方法来控制 sed -i's / foo。* bar // g'我不断看到的类型示例,它会删除从第一个foo到最后一个fob的所有文本, 包括的。对于出现的每个foo条,我们需要foo和bar之间的所有文本。

更新:考虑一个文件,example.txt

someText 1 foo someOtherText bar someOtherOtherText

someText 2 foo someOtherDiffText bar x x x foo text bar

我们需要返回;

someText 

someText x x x

这些数字告诉我们配对foo-bar有多少时间,它与文本之间出现,范围从1到100

亲切的问候

HS

1 个答案:

答案 0 :(得分:0)

Sed lacks non-greedy matching,但请尝试Perl:

perl -pe 's|foo .*? bar||g' file.txt