在xargs命令中将不同的正则表达式组合在一起

时间:2014-02-14 17:32:18

标签: regex perl bash

我有这两个正则表达式:

find ... | xargs perl -pi -e 's/\t/    /g'
find ... | xargs perl -pi -e 's/[^\S\n]+$//g'

第一个将标签更改为4个空格,第二个删除每行末尾的任何尾随空格。

我很想把两者结合起来,但不想破坏某些东西。此外,他们正在做不同的事情 - 一个是添加空格,另一个是删除空格。有没有一种安全的方法将这两者合并在一起,或者只是将它们保留原样?

2 个答案:

答案 0 :(得分:5)

你可以这样做:

find ... | xargs perl -l -pi -e 's/\t/    /g; s/\s+$//'

由于第二个find正在对第一个perl的结果进行操作,因此在单个{{1}}调用中连续执行每个命令是安全的。

答案 1 :(得分:4)

我会将表达式分开,但你可以通过一次调用perl来执行它们:

find ... | xargs perl -pi -e 's/\t/    /g;' -e 's/[^\S\n]+$//g;'