我正在使用 Ubuntu,我需要从一个每行都包含一个单词的大型 .txt 文件中生成多个 .txt 文件。
脚步:
- 从大型 .txt 列表中取出一个单词,例如富
- 生成.txt并命名为[word].txt,例如foo.txt
- [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" 完毕 )