我有一個包含大約200萬個文件的文件夾。我需要運行下面的命令:如何結合多個sed和awk命令?
sed -i 's/<title>/<item><title>/g;s/rel="nofollow"//g;s/<\/a> •/]]><\/wp:meta_value><\/wp:postmeta><content:encoded><![CDATA[/g;s/By <a href="http:\/\/www.website.com\/authors.*itemprop="author">/<wp:postmeta><wp:meta_key><![CDATA[custom_author]]><\/wp:meta_key><wp:meta_value><![CDATA[/g' /home/testing/*
sed -i '$a]]></content:encoded><wp:status><![CDATA[draft]]></wp:status><wp:post_type><![CDATA[post]]></wp:post_type><dc:creator><![CDATA[Database]]></dc:creator></item>\' /home/testing/*
awk -i inplace 1 ORS=' ' /home/testing/*
我遇到的問題是,當我運行的第一個命令,它循環通過全部2個億個文件,然後我移動到第二個命令等。問題是我基本上總共要打開600萬次文件。
我更喜歡當每個文件打開時,所有3個命令都在它上面運行,然後它移動到下一個。希望這是有道理的。
你考慮過[Perl](https://www.perl.org/)嗎? **正是這***是Perl存在的原因(IMO)。 –
一個文件需要多長時間?也許你應該首先將你的文件夾分割成子文件夾/批處理文件。更多的CPU的一個系統,並希望並行處理?也許在不同的磁盤上。 –
我想你會先做一個備份。 'sed -i'也會生成臨時文件。我會將輸出重定向到新文件。 –