我正在执行以下命令“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”它会给我一个干净的输出。为什么我手写文件时看不到干净的输出?
答案 0 :(得分:2)
您的文件不是纯文本文件。它是RTF。 grep
为您提供包含“bruno”的行以及富文本格式。
当你这样做时:
echo bruno > bash.txt
bash.txt仅包含“bruno”。
当您“手动编辑文件”时,编辑器将保存为RTF。您需要以纯文本格式保存。
答案 1 :(得分:2)
这不是纯文本文件。这看起来像一个RTF。 Grep只能理解文本,它的工作是输出找到搜索文本的整行。
我无法从你的格式中看出来,但我必须相信你所看到的“垃圾”与“bruno”文本在同一行。
答案 2 :(得分:0)
正如其他人所指出的,问题是该文件是RTF格式,并包含格式信息。如果要在TextEdit中创建纯文本文件,请使用菜单选项Format&gt;保存之前制作纯文本。更好的是,根本不要使用TextEdit - 我最喜欢的纯文本编辑是TextWrangler,但还有很多其他选项。