Shell去除空格和空行的方法

一、去除空行的方法

有時我們在處理和查看文件時,經常會有很多空行,爲了美觀或是有需要時,就有必要把這些除行去掉了,方法如下:

1)用tr命令


代碼如下:


cat 文件名 |tr -s ‘\n'


2)用sed命令


代碼如下:


cat 文件名 |sed ‘/^$/d'


3)用awk命令


代碼如下:


cat 文件名 |awk ‘{if($0!=”")print}'
cat 文件名 |awk ‘{if(length !=0) print $0}'


4)用grep命令


代碼如下:


grep -v “^$” 文件名



二、去除空格的方法


下面介紹sed是怎樣實現的,當然awk同樣可以。

1、刪除行首空格


代碼如下:


sed ‘s/^[ \t]*//g'


說明:

第一個/的左邊是s表示替換,即將空格替換爲空。
第一個/的右邊是表示後面的以xx開頭。
中括號表示“或”,空格或tab中的任意一種。這是正則表達式的規範。
中括號右邊是*,表示一個或多個。

第二個和第三個\中間沒有東西,表示空

g表示替換原來buffer(緩衝區)中的,sed在處理字符串的時候並不對源文件進行直接處理,先創建一個buffer,但是加g表示對原buffer進行替換

整體的意思是:用空字符去替換一個或多個用空格或tab開頭的本體字符串

2、刪除行末空格


代碼如下:


sed ‘s/[ \t]*$//g'


和上面稍微有些不同是前面刪除了^符,在後面加上了美元符,這表示以xx結尾的字符串爲對象。


但是要注意在KSH中,Tab並不是\t而是直接打入一個Tab就可以了。

3、刪除所有的空格


代碼如下:


sed s/[[:space:]]//g




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章