Linux

Linux

我用来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

相关内容