我有一个目录,其中包含许多都以“ _all.txt”结尾的文件。我想删除每个文件中包含“ *”或“-”的所有行,并将它们发送到以“ _all_cleaned.txt”结尾的文件中。
现在,我正在使用如下所示的for循环:
for file in *_all.txt;
do
filename=$(echo $file | cut -d '_' -f 1)
grep -vwE "(*|-)" ${file}> "${filename}_all_cleaned.txt"
done
我希望能够使用GNU parallel并行执行此操作,这样命令将在不同计算节点上的每个文件上执行,而不是等待一个节点连续执行所有操作。
我如何合并
如果文件位于服务器的登录目录中(即,您通过ssh server1 pwd
获取的目录):
parallel -Sserver1,server2 'grep -vwE "(*|-)" {} > {=s/.txt$/_cleaned.txt=}' ::: *.txt
如果相对于$HOME
的目录相同(例如/home/me/my/dir
):
parallel --wd . -Sserver1,server2 'grep -vwE "(*|-)" {} > {=s/.txt$/_cleaned.txt=}' ::: *.txt
如果是/different/dir
:
parallel --wd /different/dir -Sserver1,server2 'grep -vwE "(*|-)" {} > {=s/.txt$/_cleaned.txt=}' ::: *.txt