yuk*_*say 2 regex bash shell performance text-processing
我有1000个文件,每个文件有一百万行.每一行都有以下形式:
a number,a text
Run Code Online (Sandbox Code Playgroud)
我想从每个文件的每一行的开头删除所有数字.包括 ,
例:
14671823,aboasdyflj -> aboasdyflj
Run Code Online (Sandbox Code Playgroud)
我在做的是:
os.system("sed -i -- 's/^.*,//g' data/*")
Run Code Online (Sandbox Code Playgroud)
它工作正常,但需要花费大量的时间.
最快的方法是什么?
我在python中编码.
这要快得多:
cut -f2 -d ',' data.txt > tmp.txt && mv tmp.txt data.txt
Run Code Online (Sandbox Code Playgroud)
在一个有1100万行的文件上花了不到一秒钟.
要在目录中的多个文件上使用它,请使用:
TMP=/pathto/tmpfile
for file in dir/*; do
cut -f2 -d ',' "$file" > $TMP && mv $TMP "$file"
done
Run Code Online (Sandbox Code Playgroud)
值得一提的是,通常需要花费更长的时间才能使用单独的文件.我尝试了你的sed命令,但从原地切换到临时文件.总时间从26秒下降到9秒.