這個問題也可以說成是如何在長文本每一行的前面和后面都插入特定的相同字符或文本?
例如原始txt文檔為:
1
2
3
4
|
床前明月光,
疑是地上霜。
舉頭望明月,
低頭思故鄉。
|
要在每一行的前面和后面都插入特定的相同字符或文本,就要變成如下效果:
1
2
3
4
|
123abc 床前明月光, 456xyz
123abc 疑是地上霜。 456xyz
123abc 舉頭望明月, 456xyz
123abc 低頭思故鄉。 456xyz
|
這個例子只是短了點,可以手動復制粘貼,但如果是長文本又該如何快捷操作?
辦法一:notepa++的列編輯
先說在每行行首插入相同文本的辦法。首先把原始文本粘貼到notepa++里,然后事先復制好你要重復輸入的字符123abc
,然后把光標移到第一行第一列,也就是“床”的前面,然后按住ALT
鍵,鼠標從第一行直接拉到最末行,然后就看到光標變長了,最后直接ctrl+v
粘貼即可。
然后把光標移到第一行的末尾,就可以用列編輯在每行行尾插入重復文本了。
辦法二: notepa++正則表達式替換
把原始文本粘貼到notepa++里后,搜索,替換,查找目標里輸入^
,替換為里輸入123abc
,注意:下方的查找模式里要選擇“正則表達式”,最后點擊“全部替換”就能看到效果了。
行尾操作也類似,查找目標里輸入$
,替換為里輸入456xyz
即可。
^
匹配行首,而$
匹配行尾。
辦法三:gVIM命令
如果你使用vim,那么下面的命令可以讓你在每行快速插入重復字符。
每行的行首都添加自定義的文本或字符串:
1
|
:%s/^/要插入的字符串
|
每行的行尾都自定義的文本或字符串
1
|
:%s/$/要插入的字符串
|
例如要在每行行尾輸入456xyz
,可以先打冒號,然后直接ctrl+v或者用手勢粘貼%s/$/456xyz
即可。
另一個在每行行首插入相同字符的辦法,這是在國外網站上發現的:
先調光標到第一行的行首,然后按Ctrl+Q
選擇列,然后按j
選擇多列,然后按Shift+i
,然后輸入你要像插入的字符串,最后按Esc
就OK了。
辦法四:excel的CONCATENATE函數
先復制原始txt文檔,然后新建一個excel,在B1單元格右鍵,粘貼,然后在A1中輸入123abc
,下拉復制;同樣在C1中輸入456xyz
,下拉復制。然后在D1中輸入=CONCATENATE(A1,B1,C1)
,回車即可把A1B1C1
連起來,最后下拉就完成了。
其中=CONCATENATE(A1,B1,C1)
命令等同於=A1&B1&C1
,當元素少的時候,使用&
比較簡便。
我也在知乎提了這個問題,希望知道更多更好的辦法:)
參考:
- Notepad++的列編輯功能
- vim 每行行首或行行尾插入相同字符串
- How do I insert text at beginning of a multi-line selection in vi/Vim?
- Excel中concatenate函數的使用方法
- from: http://jerry011235.github.io/2015/11/19/%E5%9C%A8%E6%96%87%E6%9C%AC%E6%AF%8F%E4%B8%80%E8%A1%8C%E7%9A%84%E8%A1%8C%E9%A6%96%E5%92%8C%E8%A1%8C%E5%B0%BE%E9%83%BD%E6%8F%92%E5%85%A5%E7%89%B9%E5%AE%9A%E7%9A%84%E7%9B%B8%E5%90%8C%E5%AD%97%E7%AC%A6%E6%88%96%E6%96%87%E6%9C%AC/