[問題] vi 將某些特定行移到前一行後面

看板Linux作者 (Eric Chang)時間9年前 (2015/04/29 15:31), 編輯推噓2(2018)
留言20則, 7人參與, 最新討論串1/2 (看更多)
描述得可能不太好 簡單說,我有一個文字檔,內容大概如下 AAAA BB CCCC BBDDDDD EEE BBBBBBAAASSSS 我想要將開頭是 BB的每一行,接到前一行的最後,變成底下的內容 AAAABB CCCBBDDDD EEEBBBBBBAAASSS 可是一直找不到該怎麼下語法.... 還請各位鄉民幫幫忙, thanks ! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.177.1 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1430292667.A.2AB.html

04/29 15:42, , 1F
在上一行打大寫J 下一行就會併上來了
04/29 15:42, 1F

04/29 15:42, , 2F
還是你是要用script做這件事?
04/29 15:42, 2F

04/29 15:49, , 3F
大寫J是不管下一行是啥 直接併啊,我是只要併BB開頭的
04/29 15:49, 3F

04/29 15:49, , 4F
然後我是要用script沒錯
04/29 15:49, 4F

04/29 16:46, , 5F
一定要 vim script? 隨便一種其他的 script language
04/29 16:46, 5F

04/29 16:46, , 6F
要做這件事都很簡單吧?
04/29 16:46, 6F

04/29 16:47, , 7F
:1,$ s/\nBB/BB/
04/29 16:47, 7F

04/29 16:59, , 8F
樓上 no match found 耶...
04/29 16:59, 8F

04/29 17:00, , 9F
其他的也行 可以介紹一下嗎?
04/29 17:00, 9F

04/29 17:05, , 10F
我有用過 :1,$ s/^BB/CC/g 可以換掉 可是不知道怎麼把
04/29 17:05, 10F

04/29 17:05, , 11F
begin那個符號刪掉 然後可以接到上一行去
04/29 17:05, 11F

04/29 17:12, , 12F
如果B都在開頭:perl -000 -pe 's/\nB/B/sg;' file
04/29 17:12, 12F

04/29 17:21, , 13F
樓上的作法會把整個內容刪掉?
04/29 17:21, 13F

04/29 17:22, , 14F
啊N大的可以,謝謝!
04/29 17:22, 14F

04/29 17:22, , 15F
可是 還是想知道有沒有方法可以在vi內作到?
04/29 17:22, 15F

04/29 17:50, , 16F
樓下有大神提供答案了,自己看一下吧
04/29 17:50, 16F

04/29 17:51, , 17F
不應該說樓下,是指下一篇
04/29 17:51, 17F

04/29 20:47, , 18F
有 Editor 版喔,可以去那邊問
04/29 20:47, 18F

04/29 21:59, , 19F
感謝樓上提供資訊
04/29 21:59, 19F

05/01 16:56, , 20F
tr \\n , < test.txt | sed s/,BB/BB/g | tr , \\n
05/01 16:56, 20F
文章代碼(AID): #1LG8YxAh (Linux)
文章代碼(AID): #1LG8YxAh (Linux)