我有一个 Bash 脚本问题,它对我来说不再重要,但仍然让我发疯,因为我想不通。
我试图通过命令行比较 CSV 文件的列数,并在这里找到了一些看起来很有希望的说明。原始命令运行良好,但每次创建别名的尝试都失败了。
原始命令行 - 工作!
头 -n 1 文件名.CSV | awk '{split($0, 件, ","); for (i=1; i<=length(pieces); i++) print pieces[i];}' | wc -l
前任。molsen@molsen-M14xR2:~/projects/ee-export$ head -n 1 ee-content.csv | awk '{split($0, 件, ","); for (i=1; i<=length(pieces); i++) print pieces[i];}' | wc -l
7
别名命令行 - 失败!
别名 csvcc="head -n 1 $1 | awk '{split($0, pieces, ","); for (i=1; i<=length(pieces); i++) print pieces[i];}' | wc -l"
前任。molsen@molsen-M14xR2:~/projects/ee-export$ csvcc ee-content.csv
awk:命令。行:1:{拆分(bash,碎片,,);for (i=1; i<=length(pieces); i++) print pieces[i];}
awk:命令。line:1: ^ 语法错误
awk:命令。行:1:{拆分(bash,碎片,,);for (i=1; i<=length(pieces); i++) print pieces[i];}
awk:命令。line:1: ^ 语法错误
awk:命令。行:1:{拆分(bash,碎片,,);for (i=1; i<=length(pieces); i++) print pieces[i];}
awk:命令。line:1: ^ 0 作为拆分 1023 ee-content.csv 的参数数量无效
我已经用不同的引用和转义尝试了这个命令的各种变体,但它们都会产生错误。我什至研究了强引用与弱引用,但没有发现任何有用的东西。另外,我想出了这个更简单的命令,但它以同样的方式失败:
使用 SED 的命令行 - 有效!
头-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章
谁能告诉我我在这里缺少什么?谢谢你的帮助!