从文件中删除前导空格

时间:2009-12-20 07:00:26

标签: sed grep whitespace

我的shell在我的.login文件中调用了'fortune',向我提供了当天的一些消息。然而,一些命运以一个前导空白行开头,一些以两个开头,有些则根本没有任何前导空白行。这让我很烦恼。

我坐下来用我自己的shell脚本来包装运气,它将从输入中删除所有前导空格,而不会破坏实际财富的任何格式,这可能故意有空格行。

这似乎不是一个简单的单行两分钟修复,当我通过sed和grep的手册阅读(reed)时,我想我会在这里问我们很棒的顾客。

4 个答案:

答案 0 :(得分:17)

使用与Dav相同的来源:

# delete all leading blank lines at top of file
sed '/./,$!d'

来源:http://www.linuxhowtos.org/System/sedoneliner.htm?ref=news.rdf

此外,这就是为什么这样做的原因:

逗号分隔“范围”操作。 sed可以接受范围定义的正则表达式,因此/./匹配第一行,其中包含“任何”(.),$指定文件的结尾。因此,

  • /./,$将“第一个非空白行匹配到文件末尾”。
  • !然后反转该选择,使其有效地成为“文件顶部的空行”。
  • d删除这些行。

答案 1 :(得分:2)

# delete all leading blank lines at top of file
sed '/./,$!d'

来源:http://www.linuxhowtos.org/System/sedoneliner.htm?ref=news.rdf

将财富的输出输入其中:

fortune | sed '/./,$!d'

答案 2 :(得分:1)

怎么样:

sed "s/^ *//" < fortunefile

答案 3 :(得分:0)

我不确定你的财富信息实际上是什么样子,但这是一个例子

$ string="       my message of the day"
$ echo $string
my message of the day
$ echo "$string"
       my message of the day

或者您可以使用awk

echo "${string}" | awk '{gsub(/^ +/,"")}1'