シェルスクリプトを実行すると下記エラーが出てきます。
シェトしては列の並び替えを行っています。
Jan 5 15:45:05:, ,,,2017/01/05 15:45:05,,extauth,,122.122.5.3,3C:75:65:83:C2:1F,,,,,adc 2017/01/05 15:45:05 Jan 5 15:45:19:, ,(̤����),2017/01/05 15:45:19,,,extauth,,133.122.2.3,67:77:dd:e4:32:14,0,,ja-JP,Mozilla/5.0 (Linux; Android 4.4.4; 404KC Build/107.0.2b10) AppleWebKit/537.36 (KHTML, like Gecko) Ch,496 2017/01/05 15:45:19 ./sample.sh: 12: [: missing ] Jan 5 15:45:21:, ,,,2017/01/05 15:45:21,,extauth,,111.148.3.6,88:33:33:66:33:D3,,,,,ab5 2017/01/05 15:45:21 Jan 5 15:46:39:, ,,,2017/01/05 15:46:39,,extauth,,199.122.0.0,66:77:66:88:22:3F,,,,,496 2017/01/05 15:46:39 Jan 5 15:46:50:, ,(̤����),2017/01/05 15:46:50,,,extauth,,111.133.2.8,66:33:22:88:11:1F,0,,ja-JP,Mozilla/5.0 (Linux; Android 4.4.4; 404KC Build/107.0.2b10) AppleWebKit/537.36 (KHTML, like Gecko) Ch,c9d 2017/01/05 15:46:50 ./sample.sh: 12: [: missing ] Jan 5 15:47:06:, ,(̤����),2017/01/05 15:47:06,,,extauth,,133.122.5.4,88:33:33:33:33:33,0,,ja-JP,Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5 Build/M4B30X) AppleWebKit/537.36 (KHTML, like Gecko) Chro,a62 2017/01/05 15:47:06 ./sample.sh: 12: [: missing ] Jan 5 15:47:58:, ,,,2017/01/05 15:47:58,,extauth,,192.168.1.7,88:77:77:77:66:66,,,,,a62 2017/01/05 15:47:58 Jan 5 15:47:58:, ,,,2017/01/05 15:47:58,,extauth,,111.122.7.5,GG:FF:DD:VV:CC:1D,,,,,cdf 2017/01/05 15:47:58 Jan 5 15:48:24:, ,(̤����),2017/01/05 15:48:24,,,extauth,,111.133.3.6,66:66:66:84:C2:11,0,,ja-JP,Mozilla/5.0 (Linux; Android 4.4.4; 404KC Build/107.0.2b10) AppleWebKit/537.36 (KHTML, like Gecko) Ch,4444 2017/01/05 15:48:24 ./sample.sh: 12: [: missing ] Jan 5 15:49:02:, ,,,2017/01/05 15:49:02,,extauth,,188.188.2.0,CC:BB:CC:84:C2:1F,,,,,447 2017/01/05 15:49:02 join: 無効なフィールド番号です: `{1-18}'
おそらく変な文字列が含まれているときにエラーが出ているので
それが原因かと思いますが、どう修正すればよろしいでしょうか?
sh
1#!/bin/sh 2user_agent=`cat authlog_tail | cut -d, -f 14- | rev | cut -d, -f 2- | rev` 3 4while read row; do 5 echo ${row} 6 echo ${row} | cut -d, -f4 7 echo ${row} | cut -d, -f5 8 start_col=`echo ${row} | cut -d, -f4` 9 end_col=`echo ${row} | cut -d, -f5` 10 11 # レコードが認証開始か認証終了かで処理を分ける 12 if [ -n "$start_col"]; then 13 echo ${row} | awk -F, -vOFS=, '{print $1,"",$NF,"0","",$11,"","",$9,"",$10,$4,$7,$8,"","",$13,"","","","",$6,$12,"","","","","","",""}' >> result.csv 14 #echo ${row} | awk -F, -vOFS=, '{print $1,"",$NF,"0","",$11,"","",$9,"",$10,$4,$7,$8,"","",$13,""}' >> front.csv 15 #echo ${row} | awk -F, -vOFS=, '{print "","",$6,$12,"","","","","","",""}' >> behind.csv 16 elif [ -n "$end_col"]; then 17 echo ${row} | awk -F, -vOFS=, '{print $1,"",$NF,"1","",$11,"","",$9,"",$10,$5,$7,$8,"","",$13,"","","","",$6,$12,"","","","","","",""}' >> result.csv 18 #echo ${row} | awk -F, -vOFS=, '{print $1,"",$NF,"1","",$11,"","",$9,"",$10,$4,$7,$8,"","",$13,""}' >> front.csv 19 #echo ${row} | awk -F, -vOFS=, '{print "","",$6,$12,"","","","","","",""}' >> behind.csv 20 else 21 echo `date "+[%Y-%m-%d %H:%M:%S][Failed] Begin $row"` 22 fi 23done < authlog_tail 24 25join -o 1.{1-18},2.1,1.{20-} $result.csv $user_agent 26#join -o 1.{1-13},2.1,1.{15-} $front $user_agent $behind 27

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/20 02:44