gpt4 book ai didi

linux - 合并多个文件的更快方法

转载 作者:IT王子 更新时间:2023-10-29 00:55:19 26 4
gpt4 key购买 nike

我在 Linux 中有多个小文件(大约 70,000 个文件),我想在文件的每一行末尾添加一个单词,然后将它们全部合并到一个文件中。

我正在使用这个脚本:

for fn in *.sms.txt 
do
sed 's/$/'$fn'/' $fn >> sms.txt
rm -f $fn
done

有没有更快的方法来做到这一点?

最佳答案

我试过这些文件:

for ((i=1;i<70000;++i)); do printf -v fn 'file%.5d.sms.txt' $i; echo -e "HAHA\nLOL\nBye" > "$fn"; done

我尝试了您的解决方案,处理时间约为 4 分钟(真实)。您的解决方案的问题是您在 sed 上 fork 了 70000 次!而且 fork 相当慢。

#!/bin/bash

filename="sms.txt"

# Create file "$filename" or empty it if it already existed
> "$filename"

# Start editing with ed, the standard text editor
ed -s "$filename" < <(
# Go into insert mode:
echo i
# Loop through files
for fn in *.sms.txt; do
# Loop through lines of file "$fn"
while read l; do
# Insert line "$l" with "$fn" appended to
echo "$l$fn"
done < "$fn"
done
# Tell ed to quit insert mode (.), to save (w) and quit (q)
echo -e ".\nwq"
)

这个解决方案花了大约。 6 秒

不要忘记,ed 是标准的文本编辑器,不要忽视它!如果您喜欢 ed,您可能也会喜欢 ex!

干杯!

关于linux - 合并多个文件的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13330470/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com