2009-12-20 87 views
10

我的殼在我的.login文件到「財富」的電話,向我提供白天的一點點消息。然而,一些命運從一個領先的空白行開始,一些開始於兩個空白行,一些根本沒有任何空白行。這使我感到不安。刪除文件開頭的空白

我坐下來包裝的財富,我自己的shell腳本,它會從輸入中刪除所有前導空格,不破壞實際財富,這可能有意具有空白的行任何格式。

這似乎不是一個簡單的兩分鐘修復,當我通過sed和grep的手冊頁閱讀(reed)時,我想我會在這裏問我們美妙的顧客。

+0

你能明確地展示了一個財富和點你想改變哪些部分以及哪些部分是你不應該改變的格式的一部分。 – SiegeX 2009-12-20 07:47:41

回答

16

使用相同的來源,DAV:

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

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

此外,這裏就是爲什麼這個工程:

逗號分隔一個操作的 「範圍」。 SED可以接受的範圍定義正則表達式,所以/./用「什麼」(.)第一行匹配它,$指定文件的末尾。因此,

  • /./,$匹配「先不要空行到文件的末尾」。
  • !然後反轉該選擇,使其有效地「在文件頂部的空行」。
  • d刪除這些行。
+0

完美!感謝一堆!該鏈接在未來也將非常有用。 – Maarx 2009-12-20 07:59:56

+2

看起來更清楚一點:sed -n'/./,$p' – 2009-12-20 13:02:23

+0

爲了使它能夠與我需要處理的〜30K java文件一起工作,我運行了「find。-name'* .java'| xargs - n 1 sed -e'/./,$!d'-i .bak「 - 」-n 1「是sed正常工作所必需的 – Phil 2015-02-10 19:13:38

1

如何:

sed "s/^ *//" < fortunefile 
+1

這是爲什麼被拒絕?這是我閱讀OP的要求的方式。 – SiegeX 2009-12-20 07:48:39

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'