从 Linux 命令行生成多个 .txt 文件

从 Linux 命令行生成多个 .txt 文件

我正在使用 Ubuntu,我需要从一个每行都包含一个单词的大型 .txt 文件中生成多个 .txt 文件。

脚步:

  1. 从大型 .txt 列表中取出一个单词,例如
  2. 生成.txt并命名为[word].txt,例如foo.txt
  3. [word].txt 应该只包含 [word],例如foo.txt>包含內容文字

我发现您可以像这样从命令行生成 .txt 文件:

echo 'Hello, world.' >foo.txt 

如何批量处理大型 .txt 文件中的内容?

答案1

类似这样的操作应该可以工作,但它不会检查以确保创建的文件名合法。此外,如果您有重复文件,它们将被覆盖:

#!/bin/bash

filename=/path/to/your_data_file
while read -r line
do
    echo $line > "$line.txt"
done < "$filename"
echo

答案2

这个答案是为了纠正其他答案中存在的常见缺陷。基本代码应该是这样的:

#!/bin/bash
filename="/path/to/your_data_file"

while IFS= read -r line
do
    printf '%s\n' "$line" > "$line.txt"
done < "$filename"

改进:

your_data_file如果真的像问题主体中所说的那样包含“每行一个单词”,那么其中一些可能不是绝对必要的。但是你的评论提到处理“一行中包含空格的多个单词”,这需要改进不可靠的解决方案。最好从一开始就习惯于 shell 脚本的良好实践并编写可靠的代码。

答案3

对于大文件来说这可能会快得多......

/bin/bash #!/bin/bash

文件名=/路径/到/你的数据文件

排序 -u "$filename" |
(IFS=
  同时读取-r行
      回显 $line > "$line.txt"
  完毕

相关内容