regex - 从这么多文件的开头删除数字的最快方法是什么?

标签 regex bash performance shell text-processing

我有 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/

相关文章:

java - Java 中的 Python 拆分语义

regex - 正则表达式: Is there an AND operator?

linux - 关闭 bash 变量替换

java - 用 Java 将非常小的字符串写入文件的最快方法是什么?

c++ - 知道 CPU 是否支持纳秒

sql-server - T-SQL 与 GROUP BY 交叉应用

regex - 印度手机号码的正则表达式

bash - 使用命令行工具计算排序序列中的重复项

bash - 超时重试 Bash 命令

regex - 正则表达式可以做基本的算术吗?