Unix grep命令输出垃圾

时间:2012-03-26 16:40:51

标签: macos unix grep garbage

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

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

这是输出:

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

在bash.txt中,我只写了“bruno”,如果我输出“cat bash.txt”,它也会给我以下垃圾:

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&gt; bash.txt”然后“cat bash.txt”它会给我一个干净的输出。为什么我手写文件时看不到干净的输出?

3 个答案:

答案 0 :(得分:2)

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

当你这样做时:

echo bruno > bash.txt

bash.txt仅包含“bruno”。

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

Plain Text

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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