Why does my Linux text file (created with echo) end with a newline? How can I remove it?
所有的专家我都面临着一个问题,那就是添加了一条新的SED路线
我想在文本文件的末尾添加一行,我尝试了
1
| echo"Hello, how are you?">> myfile.txt |
但问题是,它在创建一个额外的空行,如下所示
1 2
| 1 Hello, how are you?
2 |
因此,我希望它将创建文本文件行的1行结尾如果文本文件中没有行,则它将创建为第一行&;所有下一行将在最后一行之后创建,没有任何空/空白行,t.i.a。
- 换句话说,它正确地创建了一个单行文本文件,其中每行以换行符结尾。您似乎来自窗口背景,其中文本文件的最后一行不需要是(通常不是?)结束。
- 你在哪里使用sed?
- 有争议的是,你的编辑不该在那里显示一行。
- 为什么有人反对这个问题?上票表明它是有用的,而且研究得很好。我能说的最好的问题不符合这两个标准。这个问题如何符合标准?
默认情况下,"echo"添加尾随新行字符。使用"-n"和echo抑制新行
1
| echo -n"Hello, how are you?">> myfile.txt |
另一种选择是使用printf
1
| printf"Hello,how are you?">> myfile.txt |
- posix没有指定echo -n(确实有任何特定的行为)。相反,使用printf更安全。请参阅echo命令的POSIX标准,尤其是应用程序使用部分。
- 即:printf '%s'"Hello, how are you?"--虽然结果不是有效的unix文本文件(while read--将返回最后一行f/e的错误,因为没有新行终止符,该行无效)。
- @查尔斯达菲:谢谢你提醒我。相应更新。:)
- printf"your string here"而不是printf '%s'"your string here"的问题是,在前一种情况下,内容被视为格式字符串而不是文字,因此需要注意其中的%符号或反斜杠;在后一种情况下,打印的内容是逐字节的,正是参数中的内容。
- 谢谢你在我使用echo-n"你好,你好吗?">>myfile.txt它的添加行没有额外的行,但是如果我再次使用echo-n"我很好,你好吗?"它插入同一行,而不是行尾你好,1你好吗?我很好,你好吗?但是我想在不创建新行的情况下添加文件行的每个行尾,希望我能澄清我的问题,
- 请避免回答主题外的问题。相反,关闭它继续前进。有时建议一个问题可能涉及主题的站点是很有帮助的。
- @JWW你有什么问题?如果有人想回答或不想回答这个问题,而不是你的问题,我认为你对一些事情感到不安,你在这个问题/主题上发泄了你的愤怒,请处理好你自己的事情,谢谢……