当前位置: 首页 > 面试题库 >

如果换行符是文件中的最后一个字符,该如何删除?

公良天逸
2023-03-14
问题内容

我有一些文件要删除最后一个换行符(如果它是文件中的最后一个字符)。 od -c告诉我,我运行的命令确实以尾随新行写入文件:

0013600   n   t  >  \n

我用sed尝试了一些技巧,但我能想到的最好的方法不是:

sed -e '$s/\(.*\)\n$/\1/' abc

任何想法如何做到这一点?


问题答案:
perl -pe 'chomp if eof' filename >filename2

或者,在适当位置编辑文件:

perl -pi -e 'chomp if eof' filename

[编者注:-pi -e最初是-pie,但正如一些评论者所指出并由@hvd解释,后者不起作用。]

在我看到的awk网站上,这被描述为“ perl亵渎”。

但是,在测试中,它奏效了。



 类似资料:
  • 问题内容: 说我有一些任意的多行文本文件: 如何在不使文本文件无效的情况下仅删除文件的最后一个字符(e,而不是换行符或null)? 问题答案: 一个更简单的方法( 输出到stdout ,不更新输入文件): 是仅与最后一个输入行匹配的Sed地址,因此导致仅在最后一行执行以下函数调用()。 用空字符串替换(在本例中为 last )行的 最后 一个字符;即,有效地删除最后一个字符。(在换行符之前)。 匹

  • 问题内容: 在互联网上浏览后,我来了。 假设我已经制作了一个文本文件,内容为: 好吧,我想从此文本文件中删除最后一个字符(在本例中为)。 因此,现在文本文件应如下所示: 但是我不知道该怎么做。 我所需要的或多或少是对HDD上文本文件的单个退格功能。 这需要在Linux上工作,因为这就是我正在使用的。 问题答案: 用于从末尾寻找1个位置,然后用于删除文件的其余部分: 这对于单字节编码工作正常。如果您

  • 问题内容: 我想删除字符串的最后一个字符,但在此之前,我想检查最后一个字符是否为“ +”。如何才能做到这一点? 问题答案: 这是删除尾随加号的几种方法。 输出:

  • 问题内容: 我已经在SOAP消息中工作过,以从Web服务获取LoginToken,并将LoginToken存储在String中并用于打印。此打印[wdsd34svdf],但我只想wdsd34svdf,如何删除方括号。请任何人帮助我。 谢谢 例: 输出:[wdsd34svdf]我想要wdsd34svdf 问题答案: 这很容易,您需要先找到[和]的索引,然后再找到子字符串。(这里[总是在开始处,]在结

  • 如何从IronPyhon中的字符串中删除最后一个字符? 我正在寻找子字符串方法或类似的方法。