gpt4 book ai didi

linux - 如何在 unix 中删除文件的最后一个字符?

转载 作者:IT老高 更新时间:2023-10-28 12:33:12 28 4
gpt4 key购买 nike

假设我有一些任意的多行文本文件:

sometext
moretext
lastline

如何在不使文本文件无效的情况下仅删除文件的最后一个字符(e,而不是换行符或 null)?

最佳答案

一种更简单的方法(输出到标准输出,不更新输入文件):

sed '$ s/.$//' somefile
  • $ 是一个仅匹配最后输入行的 Sed 地址,从而导致执行以下函数调用 (s/.$//)仅在最后一行。

  • s/.$// 用空字符串替换(在本例中为 last)行的最后一个字符;即,有效地删除最后一个字符。 (换行前)就行了。
    . 匹配行中的任何字符,并在其后跟 $ 将匹配锚定到行尾;请注意在这个 正则表达式 中使用 $ 在概念上是如何相关的,但在技术上与之前将 $ 用作 Sed 不同地址.

  • 标准输入示例(假设 Bash、Ksh 或 Zsh):

      $ sed '$ s/.$//' <<< $'line one\nline two'
    line one
    line tw

更新输入文件(如果输入文件是符号链接(symbolic link),则不要使用):

sed -i '$ s/.$//' somefile

注意:

  • 在 macOS 上,您必须使用 -i '' 而不仅仅是 -i;有关与 -i 相关的陷阱的概述,请参阅 this answer 的下半部分。
  • 如果您需要处理非常大的输入文件和/或性能/磁盘使用是一个问题并且您正在使用 GNU 实用程序 (Linux),请参阅 ImHere's helpful answer

关于linux - 如何在 unix 中删除文件的最后一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27305177/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com