我使用 CSV 文件,有时需要从命令行快速检查行或列的内容。在许多情况下cut
,head
、tail
、 和朋友会完成这项工作;然而, cut 不能轻易处理诸如
"this, is the first entry", this is the second, 34.5
Run Code Online (Sandbox Code Playgroud)
在这里,第一个逗号是第一个字段的一部分,但cut -d, -f1
不同意。在我自己编写解决方案之前,我想知道是否有人知道已经存在用于这项工作的好工具。它至少必须能够处理上面的示例并从 CSV 格式的文件中返回一列。其他理想的功能包括能够根据第一行中给出的列名选择列、支持其他引用样式和支持制表符分隔的文件。
如果您不知道这样的工具,但对在 Bash、Perl 或 Python 或其他常见脚本语言中实现这样的程序有建议,我不会介意这样的建议。
在编写shell脚本时,我经常想拆分一个字符串。这是一个非常简单的例子:
for dir in $(echo $PATH | tr : " "); do
[[ -x "$dir"/"$1" ]] && echo $dir
done
Run Code Online (Sandbox Code Playgroud)
这将在 $PATH 中的每个目录中搜索与$1
. 非常简单,它运行良好,但如果 $PATH 中的目录在其名称中包含空格,则会中断。
在出现循环分隔符时拆分字符串的推荐方法是什么?
理想情况下,该解决方案将能够在(相当)旧的 shell 上运行,即 ksh88。