我有 1000 个文件,每个文件有一百万行。每行具有以下形式:
a number,a text
我想从每个文件的每一行的开头删除所有数字。包括,
例子:
14671823,aboasdyflj -> aboasdyflj
我正在做的是:
os.system("sed -i -- 's/^.*,//g' data/*")
它工作正常,但需要花费大量时间。
最快的方法是什么?
我正在用 python 编写代码。
最佳答案
这要快得多:
cut -f2 -d ',' data.txt > tmp.txt && mv tmp.txt data.txt
在一个包含 1100 万行的文件上,它只用了不到一秒钟。
要在目录中的多个文件上使用它,请使用:
TMP=/pathto/tmpfile
for file in dir/*; do
cut -f2 -d ',' "$file" > $TMP && mv $TMP "$file"
done
值得一提的是,与使用单独的文件相比,就地做事通常需要更长的时间。我尝试了您的 sed 命令,但从原地切换到临时文件。总时间从 26 秒减少到 9 秒。
关于regex - 从这么多文件的开头删除数字的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48102393/