分割后,我需要将标题行重新应用于数据文件。原始文件是txt文件的多个演出。在split命令之后,添加标头似乎占用了大多数时间。我已经尝试过两种方法:
for i in file_split_*; do
echo "Adding header to $i"
echo -e "$HEADER\n$(cat $i)" > $i
和
for i in file_split_*; do
echo "Adding header to $i"
sed -i "1i\\$HEADER" file_split_*
在小规模测试中,将100,000行分割为10,000行的文件(添加标题后为10,001),我发现echo的速度更快(sed为6s,而echo为2.6s)。还有另一种/更快的方法来添加标题行吗?
答案 0 :(得分:0)
@choroba和@Shawn 谢谢你们指出循环中的错误。
发布时,循环将头文件多次添加到所有文件。我以为sed会更快,但无法弄清楚回声是如何更快的,这解释了这一点。
for i in file_split_*; do
echo "Adding header to $i"
sed -i "1i\\$HEADER" file_split_* <for ever loop write to all files
要修复循环,我需要$ i
for i in $1_split_*; do
echo "Adding header to $i"
sed -i "1i\\$HEADER" "$i" <for every look write to one file
由于第一块中发生了什么,我可能根本不需要循环。