有没有办法嵌套sed替换?

Tim*_*Tim 5 regex sed

我想更改文件中每一行的格式,并在其中一个匹配的组上运行另一个替换.

作为一个例子,我可以有一个简单的三列CSV文件(没有转义),我想放在另一种格式.

sed -r 's/^([a-z]+),([a-z]+),([a-z]+)$/\1: \3 (\2)'
# would turn "comma,separated,values"
# into       "comma: values (separated)"
Run Code Online (Sandbox Code Playgroud)

不过,我想从第二列中删除所有的元音,即运行s/[aeiou]//g\2.

这个嵌套替换问题有一个很好的解决方案吗?请假设两个替换都很复杂,这只是一个例子.

我的sed不是GNU sed 4.0版.

Sim*_*mon 1

我认为你最好选择awk这个,以便更容易地操纵字段。

echo "gaviidae,gruidae,picidae" | awk -F "," '{gsub(/[aeiou]/, "", $2); printf("%s: %s (%s)\n", $1, $3, $2)}'
Run Code Online (Sandbox Code Playgroud)

输出:

gaviidae: picidae (grd)
Run Code Online (Sandbox Code Playgroud)