用dos提取特定记录

时间:2014-02-20 16:08:40

标签: dos

我有一个非常大的文本文件,我只想从中提取包含特定邮政编码的记录,并在DOS中这样做。

我看到很多例子,但没有一个例子具体表达了我的需要。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

尝试使用FINDSTR。

您可以输入:

FINDSTR /?

如果您不打算向我们展示您的数据,请获取有关该命令的帮助。

以下是一些应该有用的示例:

首先,我向您展示我的文件,名为“file.txt”

E:\>TYPE file.txt 
Line 1,MA01824
Line 2,NY10017
Tricky line,SomethingNY10017Something

现在我搜索一个简单的ZIP,如“MA01824”,它可以正常工作

E:\>FINDSTR "MA01824" file.txt 
Line 1,MA01824

现在我搜索一次出现两次的ZIP,一次正确,一次嵌入另一个字符串

E:\>FINDSTR "NY10017" file.txt 
Line 2,NY10017
Tricky line,SomethingNY10017Something

哎呀,失败了。添加一个正则表达式,意思是“只在单词的开头找到”

E:\>FINDSTR /r "\<NY10017" file.txt 
Line 2,NY10017

如果用户在文件中使用大写ZIP时查找小写ZIP怎么样 - 没问题,只需使用“/ i”使搜索不区分大小写

E:\>FINDSTR /i "ma01824" file.txt 
Line 1,MA01824

如果要将上述任何命令的输出保存到新文件中,而不是在屏幕上看到它,只需在命令末尾添加大于(&gt;)和文件名,如下所示:

FINDSTR "MA01824" > MassZIPcode.txt

小心不要通过为输出文件指定相同的名称来覆盖输入文件!!!

答案 1 :(得分:0)

C:\>FIND /?

Searches for a text string in a file or files.

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

  /V         Displays all lines NOT containing the specified string.
  /C         Displays only the count of lines containing the string.
  /N         Displays line numbers with the displayed lines.
  /I         Ignores the case of characters when searching for the string.
  /OFF[LINE] Do not skip files with offline attribute set.
  "string"   Specifies the text string to find.
  [drive:][path]filename
             Specifies a file or files to search.

所以它会像FIND "010010" mydata.txt