【发布时间】:2013-05-05 18:04:41
【问题描述】:
我有一个 Bash 脚本问题,它对我来说不再重要,但仍然让我发疯,因为我想不通。
我试图通过命令行比较 CSV 文件的列数,发现一些指令 here 看起来很有希望。原始命令运行良好,但每次创建别名的尝试都失败了。
原始命令行 - 工作!
head -n 1 文件名.CSV | awk '{split($0, 件, ","); for (i=1; i
例如。 molsen@molsen-M14xR2:~/projects/ee-export$ head -n 1 ee-content.csv | awk '{split($0, 件, ","); for (i=1; i
7
别名命令行 - 失败!
别名 csvcc="head -n 1 $1 | awk '{split($0, pieces, ","); for (i=1; i
例如。 molsen@molsen-M14xR2:~/projects/ee-export$ csvcc ee-content.csv
awk:命令。行:1:{拆分(bash,碎片,,); for (i=1; i
awk:命令。 line:1: ^ 语法错误
awk:命令。行:1:{拆分(bash,碎片,,); for (i=1; i
awk:命令。 line:1: ^ 语法错误
awk:命令。行:1:{拆分(bash,碎片,,); for (i=1; i
awk:命令。 line:1: ^ 0 作为 split 的参数数量无效 1023 ee-content.csv
我已经尝试了这个命令的各种变体,使用不同的引用和转义,但它们都会产生错误。我什至查看了strong vs. weak quoting,但没有发现任何有用的东西。另外,我想出了这个更简单的命令,但它以同样的方式失败:
使用 SED 的命令行 - 有效!
head -n 1 文件.csv | sed 's/\,/\n/g' | wc -l
molsen@molsen-M14xR2:~/projects/ee-export$ head -n 1 ee-content.csv | sed 's/\,/\n/g' | wc -l
7
使用 SED 的别名 - 失败(计数行,而不是列)
别名 csvcc="head -n 1 $1 | sed 's/\,/\n/g' | wc -l"
molsen@molsen-M14xR2:~/projects/ee-export$ csvcc ee-content.csv
1023 ee-content.csv
谁能告诉我我在这里缺少什么?感谢您的帮助!
【问题讨论】:
标签: bash ubuntu csv scripting command-line-interface