如何删除所有文件和目录中的标题(第一行)。并且文件名在Unix中仍然保持不变

时间:2018-11-19 06:48:56

标签: shell

示例:在我的文件夹中 C:\ users \ inputfiles包含 file1.txt file2.txt 带有标题的file3.txt。

需要使用shell脚本删除每个文件中的标头并将数据移动到同一文件中(文件名不应更改)

3 个答案:

答案 0 :(得分:0)

为您的每个文件运行此命令。

tail -n +2 "$FILE" > "$FILE.tmp" && mv "$FILE.tmp" "$FILE"

应该可以。

答案 1 :(得分:0)

sed和tail将帮助您解决这个问题。

如果使用sed,则不需要输出重定向。

sed -i '1d' filename

如果您使用的是tail,则使用中间的tmp文件存储内容,然后将tmp文件的内容移动到原始文件名。

tail -n +2 "$FILE" > "$FILE.tmp" && mv "$FILE.tmp" "$FILE"

与sed相比,尾巴工作更快。

答案 2 :(得分:0)

我假设标题的行数都相同:2

尝试这样做,以删除当前目录中每个带有.txt后缀的文件的3行之前的行:

sed -n -i '3,$ p' *.txt

-i:直接修改每个文件