使用grep命令将数据传输到新文件中

时间:2016-10-05 04:15:29

标签: bash unix grep

这可能非常简单,但我有一个带有地震数据的.txt文件,其中我试图使用grep命令仅打印来自内华达的特定数据(文件中的数据)标记为CANV)并将其放入自己的.txt文件中。

示例数据:

map 0.2 2016/09/26 18:36:51 39.330N 119.991W 4.7 9 km ( 6 mi) N of Incline Village, NV 

map 1.5 2016/09/26 18:26:27 39.362N 122.781W 19.5 25 km (15 mi) NNE of Upper Lake, CA 

map 1.5 2016/09/26 18:18:16 36.055N 117.857W 2.2 8 km ( 5 mi) E of Coso Junction, CA 

map 0.2 2016/09/26 18:10:46 38.363N 118.324W 4.6 32 km (20 mi) SE of Hawthorne, NV

我正在输入:grep NV filename > newfilename

但是什么都没有出现。怎么了? (我的作业是专门使用grep命令。)

3 个答案:

答案 0 :(得分:1)

你想要这个:

  cat *filename* | grep something  > result.txt

答案 1 :(得分:0)

您的命令看起来好像应该有效,但为了安全起见,您可能希望确保获得您想要的内容。 grep以下只能获得以NV结尾的行

grep " NV$" filename > newfilename

当你说你看不到任何东西后,你是否在查看文件内容?

答案 2 :(得分:0)

我将您的示例数据复制/粘贴到名为sample-data的文件中并尝试了我原本使用的grep模式(' NV$'),但后来我发现只有一行来了,最后一个,因为在第一行NV之后有[不可见]空格。所以为了防止这种情况,我将[ \t]*放在grep模式中NV$(行尾符号)之间,得到了我期望的结果。见下文:

$ grep ' NV$' sample-data > result.txt
$ cat result.txt
map 0.2 2016/09/26 18:10:46 38.363N 118.324W 4.6 32 km (20 mi) SE of Hawthorne, NV
$ cat sample-data
map 0.2 2016/09/26 18:36:51 39.330N 119.991W 4.7 9 km ( 6 mi) N of Incline Village, NV 

map 1.5 2016/09/26 18:26:27 39.362N 122.781W 19.5 25 km (15 mi) NNE of Upper Lake, CA 

map 1.5 2016/09/26 18:18:16 36.055N 117.857W 2.2 8 km ( 5 mi) E of Coso Junction, CA 

map 0.2 2016/09/26 18:10:46 38.363N 118.324W 4.6 32 km (20 mi) SE of Hawthorne, NV
$ grep ' NV[ \t]*$' sample-data > result.txt
$ cat result.txt
map 0.2 2016/09/26 18:36:51 39.330N 119.991W 4.7 9 km ( 6 mi) N of Incline Village, NV 
map 0.2 2016/09/26 18:10:46 38.363N 118.324W 4.6 32 km (20 mi) SE of Hawthorne, NV
$

简而言之,我认为你想要的是安全的,是:

grep ' NV[ \t]*$' sample-data > result.txt

或者,更安全,如果你不相信,逗号和NV之间总是有空格:

grep ',[ \t]*NV[ \t]*$' sample-data > result.txt

,翻译,表示"匹配具有逗号,零个或多个空格或制表符,NV,零个或多个空格或制表符的行,并且在行尾之前不再有其他内容。"

顺便说一下,如果这是家庭作业,而不是你的工作或家庭项目,从技术上讲,你应该向老师承认你在StackOverflow上寻求帮助。你的老师会对你的诚实留下更深刻的印象,如果你能说,我可能会赢得你的支持,我得到它,我明白了,看看我测试的其他例子,他们也工作了!&# 34;老师的主要目标是你学习和理解,而不是你得到一些分数。我提供这个答案的目的是帮助你更多地了解grep,我们数百万人在生活中每天都使用它来完成我们的工作,所以这是值得学习的。可能我应该提供一个"教学"这个例子不是确切的答案,但这是一个小小的,微不足道的问题,我在喝咖啡休息时就回答了这个问题。老实说,只要对老师说实话。