【问题标题】:Unix grep command outputs garbageUnix grep 命令输出垃圾
【发布时间】:2012-03-26 16:40:50
【问题描述】:

我正在执行以下命令“grep bruno

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

【问题讨论】:

  • bash.txt 中的线条是什么样的?
  • 我只有“布鲁诺”。我是手写的,它给了我垃圾,但是如果我执行“echo bruno > bash.txt”然后“cat bash.txt”,它会显示没有垃圾的“bruno”。为什么只有当我使用 echo 而不是手写时输出才干净?
  • 你用什么编辑器创建bash.txt?文字处理器?
  • 我使用了 TextEdit,它不允许我保存为 txt。只有 doc、docx、xml、.odt、html。所以如果我想要一个干净的文本,我应该使用什么?
  • 现在我用“echo bruno > bash.txt”创建了文件,它给了我一个干净的文件,输出干净。

标签: macos unix grep garbage


【解决方案1】:

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

当你这样做时:

echo bruno > bash.txt

bash.txt 仅包含“bruno”。

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

【讨论】:

  • 谢谢伙计。这是正确的,我只是在我的编辑器上没有那个选项。
  • 截图取自 TextEdit v1.7 (289.3)。
  • TextEdit 1.12 (329) 在“格式”菜单下有一个“制作纯文本”。如果文件已经是纯文本格式(或转换后),菜单是(更改为)“制作富文本”。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • "TextWrangler 与 macOS 10.13 (High Sierra) 或更高版本不兼容。请安装并改用 BBEdit。" (来自 TextWrangler/BBEdit 网站)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2021-03-29
    相关资源
    最近更新 更多