![从 Linux 命令行生成多个 .txt 文件](https://linux22.com/image/1603791/%E4%BB%8E%20Linux%20%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%94%9F%E6%88%90%E5%A4%9A%E4%B8%AA%20.txt%20%E6%96%87%E4%BB%B6.png)
我正在使用 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" 完毕 )