估计文件中的行数,并将该值作为第一行插入

  • 本文关键字:插入 一行 文件 bash shell wc
  • 更新时间 :
  • 英文 :


我有很多文件,我必须估计每个文件中的行数,并将该值作为第一行相加。为了估计这一点,我使用了这样的东西:

wc -l 000600.txt | awk '{ print $1 }'

然而,如何对所有文件执行此操作,然后将每个文件对应的值添加为第一行,却没有成功。

例如:a.txt b.txt c.txt

>>print a
15
>> print b
22
>>print c
56

然后应将15、22和56分别添加到:a.txt b.txt和c.txt

我很感激你的帮助。

您可以在文件的第一行添加一个模式,例如(LINENUM(,然后使用以下脚本。

wc -l a.txt  | awk 'BEGIN {FS =" ";} { print $1;}' | xargs -I {} sed -i 's/LINENUM/LINENUM:{}/' a.txt

或者只使用这个脚本:

wc -l a.txt  | awk 'BEGIN {FS =" ";} { print $1;}' | xargs -I {} sed -i '1s/^/LINENUM:{}n/' a.txt

通过这种方式,您可以将行号添加为当前目录中所有*.txt文件的第一行。此外,在大文件的情况下,在此处使用group命令将比就地编辑命令更快。请勿在分组中修改空格或分号。

for f in *.txt; do
{ wc -l < "$f"; cat "$f"; } > "${f}.tmp" && mv "${f}.tmp" "$f"
done

对于所有文件的迭代,您可以从该脚本添加使用。

for f in `ls *` ; do if [ -f $f ];  then wc -l $f  | awk 'BEGIN {FS =" ";} { print $1;}' | xargs -I {} sed -i '1s/^/LINENUM:{}n/' $f ; fi;  done

这可能对你有用(GNU sed(:

sed -i '1h;1!H;$!d;=;x' file1 file2 file3 etc ...

将每个文件存储在内存中,并插入最后一行的行号作为文件大小。

备选方案:

sed -i ':a;$!{N;ba};=' file?

相关内容

  • 没有找到相关文章

最新更新