如何编写Bash脚本合并任意数量JSONL文件并打乱行顺序
处理可变数量JSONL文件的合并打乱脚本
直接利用bash的$@变量就能轻松处理可变数量的命令行参数,它会完整保留所有传入的参数(包括带空格的文件名)。以下是完整的merge.sh脚本:
#!/bin/bash # 检查是否传入了至少一个文件参数 if [ $# -lt 1 ]; then echo "错误:请传入至少一个JSONL文件作为参数" exit 1 fi # 合并所有指定文件并打乱行顺序 cat "$@" | shuf
脚本说明
$#:表示传入脚本的参数总数,用来判断是否有文件被传入,避免无参数时执行出错"$@":代表所有传入的命令行参数,加双引号是为了兼容文件名包含空格的情况cat "$@":将所有指定的文件内容合并输出shuf:接收合并后的内容,随机打乱行的顺序
使用步骤
- 给脚本添加执行权限:
chmod +x merge.sh - 运行脚本,传入任意数量的JSONL文件:
# 合并2个文件 ./merge.sh file1.jsonl file2.jsonl # 合并4个文件 ./merge.sh file1.jsonl file2.jsonl file3.jsonl file4.jsonl
内容的提问来源于stack exchange,提问作者vkaul11
相关产品推荐
相关产品推荐

