在文件上执行脚本并使用相同的文件名保存修改

时间:2014-02-05 20:36:40

标签: bash save

我在bash中有这个脚本,希望在不同的文本文件上执行它,然后将这些修改保存在具有相同名称的文件上。

这是脚本:

#!/bin/bash

awk '{if (d) d=d RS $0; else d=$0}
/>/{s++;next}
s==1 && /[ACGT]/{gsub(/[^ACGT]+/, ""); n+=length($0)} 
END{print s, n, "1" RS d}' < mytextfiles_*.txt > mytexfiles_withmodifications_*.txt

提前致谢。

1 个答案:

答案 0 :(得分:1)

像这样,但先备份!

#!/bin/bash
for i in *.txt
do
    echo Processing ${i}
    awk .... "${i}" > $$.tmp && mv $$.tmp "${i}"
done

您可能想要选择“* .txt”以外的选项。把你自己的awk东西放在我有“......”的地方

说明: 它遍历当前目录中的所有“txt”文件。它在每个上运行awk命令并将输出保存在临时文件中(使用ProcessId.tmp形成的名称)。如果awk成功,它将重命名临时文件与原始文件相同 - 从而覆盖它。请注意,不会保留权限。