【问题标题】:Remove whitespace from a set of documents linux [duplicate]从一组文档linux中删除空格[重复]
【发布时间】:2023-03-24 13:27:02
【问题描述】:

我想删除给定文本文件中的所有空格(大约 200,000 个)。

我知道如何删除其中一个空格:

cat file.txt | tr -d " \t\n\r" 

如何对所有文件夹执行此操作?

【问题讨论】:

    标签: linux bash


    【解决方案1】:

    一种方法是迭代当前目录中的文件:

    for file in *; do
       cat $file | tr -d " \t\n\r" 
    done
    

    或者,也许更好:

    for file in *; do
       sed -i 's/ //g' $file
    done 
    

    【讨论】:

    • 您需要在tr/sed 命令之后重定向输出或为sed 添加-i.bak
    • @Maroun: Globbing (*) 在处理数千个文件时会出现问题。
    • @Cyrus 你能解释一下原因吗?或者,你还有什么推荐的(我会编辑我的答案)。
    • @Maroun:命令行的长度限制为getconf ARG_MAX显示的值(以字节为单位)。
    • 如果你立即删除它,让sed 创建一个备份文件有什么意义?另外请修复shellcheck.net报告的错误
    【解决方案2】:

    我会为此使用find

    find . -type f -exec sed -i ':a;N;s/[[:space:]]*//g;ba' {}  \;
    

    这假设文件大小合理:-/

    【讨论】:

      【解决方案3】:

      只需使用for 循环

      for i in *
      do
         cat $i | tr -d " \t\n\r" > $i.tmp
         rm -f $i
         mv $i.tmp $i
      done;
      

      【讨论】:

      猜你喜欢
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 2013-04-14
      • 2014-01-05
      • 2019-06-06
      • 1970-01-01
      相关资源
      最近更新 更多