【问题标题】:Make all files in a folder as long as the longest file使文件夹中的所有文件与最长的文件一样长
【发布时间】:2021-09-15 04:52:08
【问题描述】:

我有很多 .txt 文件,其中包含许多行和单列数据。但是,文件的长度是不一样的。有些文件有 2000 行,有些文件有 2001 行等。

有时我想删除末尾的一个空行。

我想将 0 行追加到除最长文件之外的所有文件的末尾,以便所有文件的行号相等。

我希望通过一个简单的 shell 脚本来解决这个问题。

【问题讨论】:

  • 您想在所有仅包含 2000 行的文件中添加一个空行吗?

标签: bash for-loop awk sh


【解决方案1】:

首先你必须找到行数最多的文件。之后,您可以将行追加到其他文件,直到它们的行数与行数最多的文件一样多。

这里我们追加包含文本0 的行,直到文件的行数与行数最多的文件一样多。

要先删除末尾的空行,可以使用sed

sed -i '${/^$/d}' /home/kisa/data/*.txt
max=$(wc -l /home/kisa/data/*.txt | head -n-1 | sort -n | awk 'END {print $1}')
for f in /home/kisa/data/*.txt; do
  n=$(wc -l < "$f")
  yes 0 | head -n $((max-n)) >> "$f"
done

【讨论】:

    猜你喜欢
    • 2017-06-03
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多