2015-05-25 65 views
0

我想在文件中用換行符替換空白。我嘗試從其他問題的答案中的其他一些事情沒有工作:sed在OS X中用換行符替換空白

sed -e 's/\s\+/\n/g' file 
sed -e 's/[[:blank:]]\+/\n/g' file 

這些都返回文件,因爲它是。我試過如下:

sed -e 's/[[:blank:]]/\n/g' file 

n小號取代了空白。

我認爲差異是由於gnused與OS X中的差異造成的。我如何在OS X中實現這一點?

回答

1

訣竅是插入一個新行(實際上是一個新行)。

$ echo 'this will replace blanks with new lines' | sed 's/ /\ 
/g' 
+0

我想他想把所有的連續空格壓縮成一個換行符。 – Barmar

+0

@Barmar我做的,但他們都是單個空間,所以它的工作。 – sodiumnitrate

1

sed在OS X上不能識別\n在替換時,您需要使用文字換行符,並且必須將其轉義以防止它結束命令。它也不理解\s+,因此請使用[[:blank:]]\{1,}來匹配一個或多個空格。

sed -e 's/[[:blank:]]+/\ 
/g' file 
+0

可以使用一些擴展正則表達式語法,'+',與' - E'選項BSD sed – baf

+0

我在OS X上試過了,它沒有工作。我在雪豹,而不是約塞米蒂,但我敢打賭他們沒有改變'sed'。 – Barmar

+1

'[[:blank:]] +'用'sed -E'作爲優勝美地的模式。 – baf

1

tr命令是容易/更適合的IMO:

tr ' ' '\n' < $FILE_PATH 

或:

echo 'this will replace blanks with new lines' | tr ' ' '\n'