我有一个文本块,我试图在脚本中编辑:
首先,我试过
VAR2=`echo $VAR | sed 's/\n/\n\t/g'
删除换行符,但不会添加换行符或换行符。
这是一个愚蠢的错误吗?不逃避我应该做的事情吗?答案 0 :(得分:2)
两件事:
$VAR
的shell扩展,否则新线将在您有机会处理之前丢失sed
以基于行的方式工作。它单独处理每一行,并且它们之间没有看到换行符(除非你做特殊的事情)。第一个可以通过引用$VAR
来处理,我将通过将问题重新表述为“将标签插入每行的开头而不是第一个”来避免的第二个问题。这让我们:
VAR2=$(echo "$VAR" | sed '1!s/^/\t/')
sed代码的含义:在1!
条件下(我们不处理第一行的情况),执行s/^/\t/
- 即,在开头替换空字符串带有标签的行。
请注意,要查看替换的结果,您还必须引用它,否则它将被shell扩展,并且插入的空格将丢失。也就是说,
echo "$VAR2"
将显示您想要的结果,而
echo $VAR2
将丢失所有格式(如果段落中有$
这样的特殊字符,则可能会发生愚蠢的事情。