【问题标题】:Linux File ManipulationLinux 文件操作
【发布时间】:2018-08-12 15:26:30
【问题描述】:

我一直在尝试使用tr 操作一个文件,并且我的任务是删除一个文件中的所有标点符号并将内容移动到另一个文件中。

cat file1 | tr --delete [:punct:] | cp file1 file2

使用此命令时,我会返回一个没有标点符号的文件预览,但是当我查看 file2 时,所有标点符号仍然存在。

是不是我做错了什么?

【问题讨论】:

标签: linux awk pipe tr file-manipulation


【解决方案1】:

您没有更改file1,所以最后一个cp 只是复制旧文件。 cp 也不接受来自 stdin 的输入,因此您不会保存翻译后的输出。

您可以通过使用> 重定向将tr 输出直接传送到file2 来解决此问题。

tr --delete '[:punct:]' < file1 > file2

请注意,我还删除了useless use of cat

【讨论】:

  • uuoc 有争议,与问题无关。性能方面,在这种情况下,额外的过程不太可能导致问题,当然也不是最初的问题。
  • @lain,我没有说它更好。我还链接到该帖子,以便他们自己阅读。我更喜欢没有猫,所以我做出了改变。这也是事后的想法。冷静下来
  • 是的,好的。我更喜欢纯管道,从左到右阅读。它更易于可视化且更易于构建。
【解决方案2】:

看起来您需要重定向而不是管道。最后一个命令不是读取 stdio,只是将原始文件 1 复制到文件 2。试试:

cat file1 | tr --delete [:punct:] > file2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多