7

这是我的代码;“test.txt”文件包含更多的空行和除选项卡之外的空白空间。我也想删除那个空白空间和空行,但在开始之前我需要一个空行st^。怎么做?

sed "s/^[ ]*//" -i  test.txt
cat $2 > /tmp/tt.txt
sed '/^$/d' test.txt > /tmp/tt.txt
echo " " >> test.txt
echo " " >>  /tmp/tt.txt
mv /tmp/tt.txt  test.txt

我得到如下输出:

    st^flower
     p^rose
     p^jasmine
    st^animals 
     p^bear
     p^elephant

我想要像这样的输出:

    st^flower
     p^rose
     p^jasmine

    st^animals 
     p^bear
     p^elephant
4

3 回答 3

29

要输出空行,请使用:

echo -en '\n'

e - 解释\n

n - 最后不输出空行,所以双空行没有混乱

使用单引号来防止 shell 将字符解释为行尾。

于 2013-08-30T07:26:03.010 回答
3
echo -e "\n"

用双引号,它必须工作

于 2013-08-30T07:46:03.417 回答
0

我读过你的评论“它给了每一行空间,但我只想要在 st^ 之前”。因此,您可以使用以下代码在 st^ 之前插入新行:

$cat /tmp/tt.txt | sed 's/^st\^/\n\0/g'

例如:

$ echo '
st^flower
 p^rose
 p^jasmine
 st^animals 
 p^bear
 p^elephant' | sed 's/^st\^/\n\0/g' 

对我来说很好。

于 2013-08-30T10:12:15.063 回答