如何使用 UNIX 工具从文件夹中的所有 .txt 文件中删除所有换行符?
How to remove all newlines from all .txt files in a folder, using UNIX tools?
我在一个文件夹中找到了大约 300 个 (.txt) 文件,这些文件的“普通文本”格式为 /n。我希望这些文件中的所有文本都位于第一行,因为我管道中的程序需要这样做。
示例:
(是:)
GTCGCAGCCG
TCGGCTCGGA
TCTCGGCCTC
(应该是:)
GTCGCAGCCGTCGGCTCGGATCTCGGCCTC
如果我能全部覆盖,文件名保持不变,那就方便了。我还不想破解 python,有没有简单的 UNIX 工具/命令行方法?
我之前来过这里:
How do I remove newlines from a text file?
但是如何对我文件夹中的所有 300 个文件执行此操作?如果我使用 tr -d '\n' < *.txt
它会告诉我:“bash: *.txt: 模糊重定向”
您需要一个 shell 循环来依次处理每个文件。请注意,ed
是比 tr
更好的选择,因为它设计用于处理文件,而不是流。
for f in *.txt; do
printf '%%j\nwq\n' | ed "$f"
done
%j
是 ed
命令连接缓冲区中的所有行; %%
在这里是必要的,以使 printf
输出文字 %
。 wq
是将更改写回文件的命令。 (q
是可选的,因为 ed
无论如何都会在其脚本结束后退出。)
我在一个文件夹中找到了大约 300 个 (.txt) 文件,这些文件的“普通文本”格式为 /n。我希望这些文件中的所有文本都位于第一行,因为我管道中的程序需要这样做。
示例:
(是:)
GTCGCAGCCG
TCGGCTCGGA
TCTCGGCCTC
(应该是:)
GTCGCAGCCGTCGGCTCGGATCTCGGCCTC
如果我能全部覆盖,文件名保持不变,那就方便了。我还不想破解 python,有没有简单的 UNIX 工具/命令行方法?
我之前来过这里: How do I remove newlines from a text file?
但是如何对我文件夹中的所有 300 个文件执行此操作?如果我使用 tr -d '\n' < *.txt
它会告诉我:“bash: *.txt: 模糊重定向”
您需要一个 shell 循环来依次处理每个文件。请注意,ed
是比 tr
更好的选择,因为它设计用于处理文件,而不是流。
for f in *.txt; do
printf '%%j\nwq\n' | ed "$f"
done
%j
是 ed
命令连接缓冲区中的所有行; %%
在这里是必要的,以使 printf
输出文字 %
。 wq
是将更改写回文件的命令。 (q
是可选的,因为 ed
无论如何都会在其脚本结束后退出。)