Bash スクリプトに関する質問がありますが、それはもはや重要ではありませんが、理解できないため、いまだに気が狂いそうになっています。
コマンド ラインを使用して CSV ファイルの列数を比較しようとしていたところ、見込みのある手順がいくつか見つかりました。元のコマンドは完全に機能しましたが、エイリアスを作成する試みはすべて失敗しました。
オリジナルのコマンドライン - WORKS!
head -n 1 ファイル名.CSV | awk '{split($0, 個, ","); for (i=1; i<=length(pieces); i++) print pieces[i];}' | トイレ -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];}' | トイレ -l
7
コマンドラインのエイリアス - 失敗!
alias 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: cmd. line:1: {split(bash, pieces, ,); for (i=1; i<=length(pieces); i++) print pieces[i];}
awk: cmd. 行:1: ^ 構文エラー
awk: cmd. line:1: {split(bash, pieces, ,); for (i=1; i<=length(pieces); i++) print pieces[i];}
awk: cmd. 行:1: ^ 構文エラー
awk: cmd. line:1: {split(bash, pieces, ,); for (i=1; i<=length(pieces); i++) print pieces[i];}
awk: cmd. line:1: 分割 1023 ee-content.csv の引数の数として ^ 0 は無効です
さまざまな引用符とエスケープを使用して、このコマンドであらゆる種類のバリエーションを試しましたが、すべてエラーが発生します。強い引用と弱い引用についても調べましたが、役立つものは何も見つかりませんでした。また、このより単純なコマンドを思いつきましたが、同じように失敗します。
SED を使用したコマンドライン - 動作します!
head -n 1 file.csv | sed 's/\,/\n/g' | トイレ -l
molsen@molsen-M14xR2:~/projects/ee-export$ head -n 1 ee-content.csv | sed 's/\,/\n/g' | トイレ -l
7
SED を使用したエイリアス - 失敗 (列ではなく行をカウント)
alias 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
ここで何が欠けているのか誰か教えてもらえますか? ご協力いただきありがとうございます!