【问题标题】:Use tr to remove line breaks in multiple files?使用 tr 删除多个文件中的换行符?
【发布时间】:2014-12-01 09:51:54
【问题描述】:

我正在分析一组数百​​个 .txt 文件(使用 NSP 进行 ngram 分析),我需要从每个文件中删除所有换行符。我可以使用 tr 一次完成一个:

$ tr -d "\n\r" < input1.txt > output1.txt

如何一次对我的整个文件目录执行此操作?

【问题讨论】:

    标签: bash for-loop newline tr file-manipulation


    【解决方案1】:

    这将在 .txt 之前添加 -out。除了 .txt,您还没有指定文件名是什么样的,所以希望您没有名为 foo-out.txt 等的输入文件。

    for f in *.txt
    do
      tr -d "\n\r" < "$f" > $(basename "$f" .txt)-out.txt
    done
    

    【讨论】:

    • 完美。简单直接。我知道我不应该在这里说“谢谢”,但由于我没有足够的代表对此 +1,谢谢。
    • @TedMaclin :请注意,如果您获得更多输入文件并希望在同一目录中重新运行此脚本,它将重新处理 *-out.txt 文件。但我想这没关系,因为它们不会被修改,而且tr 相当快。但我建议给输出文件一个不同的扩展名,这样你仍然可以使用简单的*.txt glob 作为你的输入文件。或者更好的是,将输出文件放到一个单独的目录中。
    • 单独的目录是个好主意。编写的代码在重复运行时会生成 foo-out-out.txt 和 foo-out-out-out.txt... :p
    • 如果我想用相同的文件名覆盖它意味着我该如何实现它。
    • 希望您的文件不被称为input 1.txt。让我解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 2013-03-29
    • 1970-01-01
    • 2014-05-22
    • 2017-12-01
    • 2012-04-13
    • 1970-01-01
    相关资源
    最近更新 更多