sed 命令不会在文本文件中插入文本

sed 命令不会在文本文件中插入文本

这是我的示例测试sed命令,用于将示例文本插入空文本文件。

sed -i "$ a\My test text" Desktop/test.txt
sed -i '$ a\My test text' Desktop/test.txt

我尝试了两个选项,一个使用单引号,另一个使用双引号。但这两个命令都无法将该文本写入我的test.txt文件。为什么这些命令不起作用?

答案1

a和命令i对空文件不起作用。正如您提到的,这~/Desktop/test.txt是一个空文件,您尝试的两个命令都无法满足您的目的。相同的命令对非空文件有效。

您可以尝试echo而不是sed实现您的目标。

此问答更多细节。

答案2

我刚刚遇到了这个问题,但echo在我的特定用例中没有用到,即循环遍历数组并打印内容。我无法正确格式化echo,所以需要保留sed。但正如@pomsky正确指出的那样,它不喜欢空文件。呃。

解决方案:

因此,对于我的特定用例,我echo在新创建的文件中添加了一个空白区域:

if [ ! -s file ]; then echo "" > file; fi

测试不会进行评估,true因为虽然文件为空,但是在由其创建的干净文件上它的大小不大于零touch- 因此我使用否定!现在第一行将回显一个空格。

当我随后执行时:

sed -i "1i blah" file

现在我的sed将对“空”文件进行操作。我实际上并没有打印“废话“,但循环遍历了数组的内容;-)

如果您处于类似的情况,不能仅仅使用echo代替sed,我希望这可以为您节省解决让我抓狂的相同问题的周期......

相关内容