这就是我所拥有的:
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