Jupyter Shell中sort命令报‘Input file specified two times’错误求助
解决Jupyter中Shell命令按列大小写不敏感排序的错误
问题根源
你遇到的“Input file specified two times”错误,主要来自两个问题:
- Python变量
$filename未加引号,若文件名包含空格/特殊字符,会被Shell拆分为多个参数,导致head读取多个文件,同时干扰sort命令的参数解析。 sort命令的-t选项写法错误,比如-t\或-t' '的格式不符合Shell解析规则,导致sort误将后续参数当作输入文件。
解决方案
方案1:简化命令(默认空格分隔)
因为sort默认以空格作为列分隔符(多个连续空格视为一个分隔符),直接省略-t选项即可,同时给$filename加上引号避免变量拆分:
!head -n 5 "$filename" | sort -f -k2
方案2:指定单个空格分隔符(若需精确拆分)
如果你的数据需要严格按单个空格拆分列,使用正确的-t写法(-t与分隔符之间留空格,或用ANSI-C引号):
# 写法1:-t 后跟空格(用单引号包裹) !head -n 5 "$filename" | sort -f -t ' ' -k2 # 写法2:用ANSI-C引号指定空格 !head -n 5 "$filename" | sort -f -t$' ' -k2
验证示例
假设filename指向的文件内容为:
1 Apple 2 banana 3 Cherry 4 date 5 Elderberry
执行上述正确命令后,会按第二列大小写不敏感排序,输出:
2 banana 1 Apple 3 Cherry 4 date 5 Elderberry
内容的提问来源于stack exchange,提问作者md Almus Fuad
相关产品推荐
相关产品推荐

