使文件夹中的所有文件与最长的文件一样长
Make all files in a folder as long as the longest file
我有很多 .txt
文件,其中包含许多行和一列数据。但是,文件的长度并不相同。有些文件有 2000 行,有些文件有 2001 行等等
有时我想删除末尾的一个空行。
我想在除最长文件之外的所有文件的末尾附加 0 行,以便所有文件的行号相等。
我想用一个简单的 shell 脚本来解决这个问题。
首先你要找到行数最多的文件。之后,您可以向其他文件追加行,直到它们的行数与行数最多的文件一样多。
这里我们追加包含文本 0
的行,直到文件的行数与行数最多的文件一样多。
要先去掉末尾的空行,可以使用sed
:
sed -i '${/^$/d}' /home/kisa/data/*.txt
max=$(wc -l /home/kisa/data/*.txt | head -n-1 | sort -n | awk 'END {print }')
for f in /home/kisa/data/*.txt; do
n=$(wc -l < "$f")
yes 0 | head -n $((max-n)) >> "$f"
done
我有很多 .txt
文件,其中包含许多行和一列数据。但是,文件的长度并不相同。有些文件有 2000 行,有些文件有 2001 行等等
有时我想删除末尾的一个空行。
我想在除最长文件之外的所有文件的末尾附加 0 行,以便所有文件的行号相等。
我想用一个简单的 shell 脚本来解决这个问题。
首先你要找到行数最多的文件。之后,您可以向其他文件追加行,直到它们的行数与行数最多的文件一样多。
这里我们追加包含文本 0
的行,直到文件的行数与行数最多的文件一样多。
要先去掉末尾的空行,可以使用sed
:
sed -i '${/^$/d}' /home/kisa/data/*.txt
max=$(wc -l /home/kisa/data/*.txt | head -n-1 | sort -n | awk 'END {print }')
for f in /home/kisa/data/*.txt; do
n=$(wc -l < "$f")
yes 0 | head -n $((max-n)) >> "$f"
done