[問題] sed裡用正規表示法

看板Linux作者 (鋒哥是用腳踢球的)時間16年前 (2009/09/30 18:37), 編輯推噓6(605)
留言11則, 4人參與, 最新討論串1/1
我有一筆資料 裡面是用空格所分開的.... 但是空格的長度是任意的 有些甚至是tab 例如:a.txt 1 3 5 7 9 3 4 3 2 5 現在我想要把他整理成漂亮一點的格式.... 例如:b.txt 1:3:5:7:9 3:4:3:2:5 於是我下 sed 's\\[^\ \t\r\n\v\f\]\/:\g' a.txt > b.txt 但是並沒有做到我想要的..... 請問一下有沒有比較好一點的方法.....?或是我指令下錯了... 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.176.14

09/30 19:05, , 1F
sed -r 's/[ \t]+/:/g' a.txt > b.txt ?
09/30 19:05, 1F

09/30 20:04, , 2F
沒有-r 這個option...
09/30 20:04, 2F

09/30 20:09, , 3F
那 sed 's/[ \t]\{1,\}/:/g' a.txt > b.txt ?
09/30 20:09, 3F

09/30 21:14, , 4F
可以了!! 感謝...不過是什麼意思呢?\{1,\}
09/30 21:14, 4F

09/30 22:14, , 5F
\{1,\}表示連續1個到無限多個
09/30 22:14, 5F

09/30 22:15, , 6F
{1,} 代表出現一次以上,等於 +
09/30 22:15, 6F

09/30 22:15, , 7F
正常來講應該是用 + 啦,可能 sed 語法有不同
09/30 22:15, 7F

09/30 22:22, , 8F
sed 's/\ \+/:/g;s/\t\+/:/g'
09/30 22:22, 8F

09/30 22:25, , 9F
sed 's/[\ \t]\+/:/g'
09/30 22:25, 9F

09/30 23:08, , 10F
了解....感謝~!
09/30 23:08, 10F

09/30 23:49, , 11F
+ 是posix擴充,-r是開啟擴充,但沒有只好用 \{1,\}
09/30 23:49, 11F
文章代碼(AID): #1AmpJh7A (Linux)