2016-03-02 300 views
0

我有一個看起來像這樣的文件:使用SED刪除開頭和結尾的空格

2 1 word 
    78 3 other words 
    2 some other words here 
    54 bla bla 

我想刪除空格,並把價值觀和休息之間的逗號。輸出應該看起來像

2,1 word 
78,3 other words 
2,some other words here 
54,bla bla 

命令

sed -e 's/\s*([0-9])+\s.+/&/' 

不會改變任何東西

回答

1

這應該有訣竅嗎?

sed -Ee 's/^[[:space:]]+([0-9]+)[[:space:]]+/\1,/' bob 
2,1 word 
78,3 other words 
2,some other words here 
54,bla bla 
+0

非法選項R(下OSX) – Bob

+1

好了,收拾你的標籤,然後:) .. 。你將它標記爲Linux Bash或者使用自制軟件安裝體面的sed;} – tink

+1

++;只需使用'-E'而不是'-r',它可以在OSX上工作(順便說一句,GNU'sed'也支持'-E',即使手冊頁沒有這樣說)。 – mklement0

0

您可以使用此sed將刪除所有前導和尾隨空格在每行1後插入逗號number:

sed -E 's/^[[:blank:]]+|[[:blank:]]+$//g; s/([[:digit:]]+)[[:blank:]]*/\1,/' file 

2,1 word 
78,3 other words 
2,some other words here 
54,bla bla 

但是,如果您沒有尾隨空格在e ach line然後使用:

sed -E 's/^[[:blank:]]*([[:digit:]]+)[[:blank:]]*/\1,/' file 

[[:blank:]]匹配空格或製表符。

-1

嘗試:

sed -e 's/(\d) (\d)(*)/\1,\2\3' infile.txt 
+2

sed:1:「s /(\ d)(\ d)(*)/ \ 1,\ 2 \ 3 」:\ 1未在RE – Bob

+2

中定義@Arif:您是否真的嘗試過? :) – tink

0

這將與任何POSIX sed的工作:

$ sed 's/^[[:space:]]*//; s/[[:space:]]*$//; s/[[:space:]]/,/' file 
2,1 word 
78,3 other words 
2,some other words here 
54,bla bla 
相關問題