1

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

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

这是输出:

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

4

3 回答 3

2

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

当你这样做时:

echo bruno > bash.txt

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

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

纯文本

于 2012-03-26T16:52:18.560 回答
2

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

我无法从您的格式中看出,但我必须相信您看到的“垃圾”与“布鲁诺”文本在同一行。

于 2012-03-26T16:53:40.043 回答
0

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

于 2012-03-26T17:38:14.930 回答