2012-03-26 166 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,但還有很多其他選項。