如何使用 sed 遍历文件并将输出保存在不同的文件中?
How to loop over files and save output in different files using sed?
我有两个不同的文件 A.txt 和 B.txt 都包含相同的字符串。
我想使用 sed
命令来替换字符串,但我不想覆盖 A.txt 和 B.txt.
实际上我想遍历文件,然后对两个文件都做这样的事情:
sed 's/myString/myNewString/g' A.txt > updatedA.txt
我可以使用什么技巧来以这种方式为尽可能多的文件重定向输出?假设我有 x *.txt 文件。
谢谢。
对当前目录中的所有 .txt 文件使用 for
循环:
for file in *.txt; do
sed 's/myString/myNewString/g' "$file" > "updated$file"
done
每个目录仅使用此脚本一次。
这可能对你有用(GNU 并行):
parallel sed 's/myString/myNewString/g' {} \> updated{} ::: *.txt
这将遍历当前目录中的所有 txt 文件,并使 amendments/copies 成为前缀为 updated
的新文件。
如果您只想为有更改的文件创建文件,请使用:
parallel grep myString {} \&\& sed 's/myString/myNewString/g' {} \> updated{} ::: *.txt
或者重新遍历一个目录下的所有txt
个文件,使用:
find . -name '*.txt' | parallel sed 's/myString/myNewString/g' {} \> {//}/updated{/}
我有两个不同的文件 A.txt 和 B.txt 都包含相同的字符串。
我想使用 sed
命令来替换字符串,但我不想覆盖 A.txt 和 B.txt.
实际上我想遍历文件,然后对两个文件都做这样的事情:
sed 's/myString/myNewString/g' A.txt > updatedA.txt
我可以使用什么技巧来以这种方式为尽可能多的文件重定向输出?假设我有 x *.txt 文件。
谢谢。
对当前目录中的所有 .txt 文件使用 for
循环:
for file in *.txt; do
sed 's/myString/myNewString/g' "$file" > "updated$file"
done
每个目录仅使用此脚本一次。
这可能对你有用(GNU 并行):
parallel sed 's/myString/myNewString/g' {} \> updated{} ::: *.txt
这将遍历当前目录中的所有 txt 文件,并使 amendments/copies 成为前缀为 updated
的新文件。
如果您只想为有更改的文件创建文件,请使用:
parallel grep myString {} \&\& sed 's/myString/myNewString/g' {} \> updated{} ::: *.txt
或者重新遍历一个目录下的所有txt
个文件,使用:
find . -name '*.txt' | parallel sed 's/myString/myNewString/g' {} \> {//}/updated{/}