Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么sed在OSX中添加新行?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述@H_944_4@ echo -n 'I hate cats' > cats.txt sed -i '' 's/hate/love/' cats.txt 这可以正确更改文件中的单词,但也会在文件末尾添加一个换行符.为什么?这只发生在OSX,而​​不是Ubuntu等等.我该如何阻止它? echo -n 'I hate cats' > cats.txt 此命令将使用单引号之间的11个字符填充“cats.txt”的内容.如
@H_197_6@
@H_197_6@

echo -n 'I hate cats' > cats.txt
sed -i '' 's/hate/love/' cats.txt

这可以正确更改文件中的单词,但也会在文件末尾添加一个换行符.为什么?这只发生在OSX,而​​不是Ubuntu等等.我该如何阻止它?

解决方法

echo -n 'I hate cats' > cats.txt

此命令将使用单引号之间的11个字符填充“cats.txt”的内容.如果在这个阶段检查cats.txt的大小应该是11个字节.

sed -i '' 's/hate/love/' cats.txt

该命令将逐行读取cats.txt文件,并将其替换为每个行的第一个“hate”替换为“love”(如果此类实例存在)的文件.重要的是了解一条线是什么.从sed手册页:

Normally,sed cyclically copies a line of input,not including its
 terminaTing newline character,into a pattern space,(unless there is
 something left after a ``D'' function),applies all of the commands
 with addresses that SELEct that pattern space,copies the pattern
 space to the standard output,appending a newline,and deletes the
 pattern space.

注意附加换行符.在您的系统上,sed仍然将您的文件解释为包含一行,即使没有终止的换行符.所以输出将是11个字符,加上附加的换行符.在其他平台上,情况并非如此.有时sed会完全跳过一个文件的最后一行(有效地删除它),因为it is not really a line!但是在你的情况下,sed基本上是为你修复文件(作为一个没有行的文件,它的输入是sed).

在这里查看更多细节:Why should text files end with a newline?

看到这个问题可以解决你的问题:SED adds new line at the end

大佬总结

以上是大佬教程为你收集整理的为什么sed在OSX中添加新行?全部内容,希望文章能够帮你解决为什么sed在OSX中添加新行?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
猜你在找的Linux相关文章