2012-03-26 156 views
1

我正在执行下面的命令“grep bruno < bash.txt”,它给了我正确的输出“bruno”和垃圾“\ f0 \ fs24 \ cf0”。Unix grep命令输出垃圾

我在Mac OS X v10.6.8的命令行界面上,我很确定我应该找到找到的单词和单词的行。不是垃圾。

这是输出:

Mobile-Devs-MacBook-Pro:Screenshots Poupe mdev$ grep bruno < bash.txt 
\f0\fs24 \cf0 bruno\ 

在bash.txt我只写了 “布鲁诺”,如果与 “猫bash.txt” I输出这也给了我下面的垃圾:

Mobile-Devs-MacBook-Pro:Screenshots Poupe mdev$ cat bash.txt 
{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 
{\fonttbl\f0\fswiss\fcharset0 Helvetica;} 
{\colortbl;\red255\green255\blue255;} 
\paperw11900\paperh16840\margl1440\margr1440\vieww9000\viewh8400\viewkind0 
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural 

\f0\fs24 \cf0 bruno\ 

如果我制作“echo bruno> bash.txt”,然后“cat bash.txt”,它会给我一个干净的输出。为什么我手动写文件时看不到干净的输出?

+0

“bash.txt”中的行看起来像什么? – chrisaycock 2012-03-26 16:44:20

+0

我只有“布鲁诺”。我用手写的,它给了我垃圾,但如果我做“回声布鲁诺> bash.txt”,然后“猫bash.txt”,它显示我“布鲁诺”没有垃圾。为什么只有当我使用echo时输出才干净,而不是当我用手写入时? – bruno 2012-03-26 16:47:59

+1

你用什么编辑器创建'bash.txt'?一个文字处理器? – chrisaycock 2012-03-26 16:54:02

回答

2

您的文件不是纯文本文件。这是RTFgrep正在为您提供包含“bruno”的行,以及丰富的文本格式。

当你这样做:

echo bruno > bash.txt 

bash.txt只包含 “布鲁诺”。

当你“手动编辑文件”时,你的编辑器保存为RTF格式。您需要保存为纯文本。

Plain Text

+1

谢谢你。这是正确的,我只是在编辑器上没有这个选项。 – bruno 2012-03-27 11:48:28

+0

截图取自TextEdit v1.7(289.3)。 – Johnsyweb 2012-03-27 22:21:13

2

这不是一个纯文本文件。这看起来像一个RTF。 Grep只理解文本,其工作是输出找到搜索文本的整个行。

我无法从格式中看出来,但我必须相信您看到的“垃圾”与“bruno”文本位于同一行。

0

正如其他人指出的,问题是该文件是RTF格式,并包含格式信息。如果要在TextEdit中创建纯文本文件,请在保存之前使用菜单选项“格式”>“制作纯文本”。更好的是,不要使用TextEdit - 我最喜欢的纯文本编辑是TextWrangler,但还有很多其他选项。