如何计算文本文件中的行数并将其插入到第一行

如何计算文本文件中的行数并将其插入到第一行

我有超过 1000 个文本文件,我想计算每个文件中的行数并将其插入到第一行。我用 wc 计算,但无法插入。

wc -l *.txt |

答案1

使用 GNU sed:

for f in *.txt; do sed -i "1i$(wc -l < "$f")" "$f"; done

1i在第一行之前插入文本,并将-i更改写入文件。


纯粹主义者可能会ed使用sed

for f in *.txt; do printf '0r !wc -l < %%\n,wq\n' | ed -s "$f"; done

答案2

你不能(轻易)前置某些内容到文件中。因此需要一个临时文件,如下所示:

for f in *.txt; do
    tmpfile=$(mktemp)       # temp. file
    wc -l "$f" > $tmpfile   # store number of lines 
    cat "$f" >> $tmpfile    # append file content
    mv "$tmpfile" "$f";     # move temp. file to original file
done

相关内容