使用 bash 脚本批量折叠文本文件

使用 bash 脚本批量折叠文本文件

我很难做一些非常简单的事情。我有大约 2000 个由一行数字组成的 .txt 文件。我想使用 fold 命令将单行折叠成一列,其中包含多行,然后用这个新的折叠版本覆盖原始文件。我的尝试:

#!/bin/bash
for i in *.txt ; do
  fold -w 1 $file > $file
done

不起作用。有帮助吗?谢谢。

答案1

这里有两个问题。首先,您声明了变量“i”,但使用了不存在的“$file”。即使它存在,第二个问题是 bash 读取“从左到右”。这意味着它将首先看到“>$file”,并将覆盖文件的内容。因此,如果您使用正确的变量,您将丢失数据。

所以,一个错误拯救了你,你真幸运,真幸运 :)

尝试以下方法:

for i in *.txt ; do fold -w 1 $i > sillytmpfile; mv sillytmpfile $i; done

答案2

sed也可能是一个选择,它在内部处理临时文件问题:

for i in *.txt ; do
  sed  -i 's#.#&\n#g' $file
done

相关内容