我的shell在我的.login文件中调用了'fortune',向我提供了当天的一些消息。然而,一些命运以一个前导空白行开头,一些以两个开头,有些则根本没有任何前导空白行。这让我很烦恼。
我坐下来用我自己的shell脚本来包装运气,它将从输入中删除所有前导空格,而不会破坏实际财富的任何格式,这可能故意有空格行。
这似乎不是一个简单的单行两分钟修复,当我通过sed和grep的手册阅读(reed)时,我想我会在这里问我们很棒的顾客。
答案 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'