纯文本文件上的批量替换

时间:2012-04-16 11:59:07

标签: notepad++ replace

我的数据如下:

7DigitNumbers (tabspace)的 IRRELEVANTSTUFF123 (tabspace)的 30

示例:

2712061    really irrelevant words and numbers     30

我想要得到的是:

7DigitNumbers (tabspace)的 30

在同一个例子中:

2712061     30 

我已经通过find& replace函数在记事本++上尝试了几种组合,但无法弄明白。你能帮帮我吗?

提前致谢, MIT

3 个答案:

答案 0 :(得分:1)

获取Windows的awk副本,例如:gawk并使用以下命令:awk "{print $1,$NF}"。这将打印第一列和最后一列(NF是字段数)。

快速测试将数据复制到文件中并在某些单词之间添加一些标签会产生:

C:\temp>awk "{print $1 \"\t\" $NF}" z.dat
2712061 32
2712062 31
2712063 30

awk print语句连接其所有参数 - 因此这将使用单个制表符分隔第一列和最后一列的值。

答案 1 :(得分:1)

看起来Don Ho将RegEx回溯添加到Notepad ++ native替换 从here下载记事本6.1.1 安装Notepad 6.1.1,然后转到Search-> Replace on

Find what:    ^([0-9]{7})(\t).*([0-9]{2})$  
Replace with: \1\2\3

单击“全部替换”按钮

答案 2 :(得分:0)

使用PythonScript Notepad ++插件进行Python正则表达式搜索和替换 有关功能

,请参阅here
Editor.pyreplace(search, replace[, count[, flags[, startLine[, endLine]]]])  

Editor.pymlreplace(search, replace[, count[, flags[, startPosition[, endPosition]]]])  

这是一个使用python正则表达式搜索和替换函数editor.pyreplace()的简单程序 我已经留下了很多调试代码,因此你可以看到在函数运行过程中发生了什么。

# $Revision: 1.3 $
# $Author: dot $
# $Date: 2012/04/19 00:03:26 $

from Npp import *
import re, string

expression = notepad.prompt(
                 "Enter the search string on the first line, followed by Ctrl+Enter, \n" +
                 "followed by the replace string on second line",
                 "RegEx and Search/Replace" ,
                 "")

debug = True
#debug = False

if debug:
    bufferID = notepad.getCurrentBufferID()

if debug:
    # Show console for debugging
    console.clear()
    console.show()

if expression != None:
    expressionList = re.split(r"[\n\r]+", expression)

    if debug:
        console.write( expression + "\n" )

    if len(expressionList) == 2:
        if debug:
            console.write( "'" + expressionList[0] + "', '" + expressionList[1] + "'\n" )

        # First we'll start an undo action, then Ctrl-Z will undo the actions of the whole script
        editor.beginUndoAction()

        if debug:
            console.write( 'editor.pyreplace( r"%s" % expressionList[0], r"%s" % expressionList[1], 0, re.IGNORECASE)\n' )

        editor.pyreplace( r"%s" % expressionList[0], r"%s" % expressionList[1], 0, re.IGNORECASE)

        # End the undo action, so Ctrl-Z will undo the above two actions
        editor.endUndoAction()

# Debug
if debug:
    notepad.activateBufferID(bufferID)

将此脚本链接到Notepad ++快捷方式(即Ctrl + r)后,搜索

^([0-9]{7})(\t).*([0-9]{2})$  

并替换为

\1\2\3

将此脚本映射到Notepad ++快捷方式Ctrl+<ChooseALetter>并运行它 我测试了这个脚本,效果很好!