我用来sed
快速删除特定位置的行
sed '1d'
sed '5d'
但是,如果我想删除文件的最后一行并且我不知道行数怎么办(我知道我可以使用wc
其他一些技巧来实现)。
head
目前,使用和tail
结合使用解决方法wc
来做到这一点。这里有什么快速的转折吗?
答案1
sed 中$
是最后一行,因此要删除最后一行:
sed '$d' <file>
更新为包括从文件底部删除多行的方法:
tac <file> | tail -n +3 | tac > <new_file>
tac
向后读取文件(cat
向后)tail -n +3
从第 n 行开始读取输入tac
读取输入并将顺序反转回原来的顺序
答案2
$ 最后一行:
sed '$d' file
答案3
cat file.txt | head -n -1 > new_file.txt
请注意,似乎根据最后一行file.txt
(如果以EOF
, or\n
结尾EOF
),此命令之后的行数new_file.txt
可能与 相同file.txt
(当没有 时会发生这种情况\n
) - 在任何情况下,最后一行的内容被删除。
另外,请注意,您必须使用第二个(中间)文件。如果您 cat 并重定向到同一个文件,您将删除它。
答案4
Linux
$ 是最后一行,d 表示删除:
sed '$d' ~/path/to/your/file/name
苹果系统
相当于 sed -i
sed -i '' -e '$ d' ~/path/to/your/file/name