在 sed 中找到多份文本-可能吗?

在 sed 中找到多份文本-可能吗?

这就是我所拥有的:

echo -e "a\t4\nb\t7\nc\t2\nd\t12\n" | sed -rn 's/(.*)\t([0-9]*)$/\2\t\1\1\1\t/p'

4   aaa  
7   bbb 
2   ccc 
12  ddd 

我想要的是:

4   aaaa    
7   bbbbbbb  
2   cc  
12  dddddddddddd    

这仅在 sed 中可行吗还是我必须使用其他工具?

答案1

并非完全纯净sed而是设置e允许嵌入 shell 命令并执行它们的标志,并允许有风险命令注入,所以知道一个并执行(如果你必须) 风险自负。

这也不是我喜欢的方式,但是你要求这样做。

也就是说,你可以用如下方法来实现:

$ echo -ne "a\t4\nb\t7\nc\t2\nd\t12\n" |
sed -rn "s/(.*)\t([0-9]*)$/bash -c \"printf '%s\t' \2; printf '\1%.0s' {1..\2}\"/ep"
4   aaaa
7   bbbbbbb
2   cc
12  dddddddddddd

相关内容