質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

10932閲覧

シェルスクリプトの実行時に[:missing]がでる原因がわからない

kozica

総合スコア58

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2018/12/19 07:40

シェルスクリプトを実行すると下記エラーが出てきます。
シェトしては列の並び替えを行っています。

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Bash

1誤) 2 if [ -n "$start_col"]; then 3正) 4 if [ -n "$start_col" ]; then

スペースを開けましょう。

投稿2018/12/19 07:45

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kozica

2018/12/20 02:44

なるほど! シェルは最近触り始めたので、そういったルールがまだわかっていませんでした、、、 ありがとうございます!
guest

0

[: missing ]

[を閉じる]が無いよというエラーです。]の前に空白がないのが原因です。

投稿2018/12/19 07:45

otn

総合スコア84542

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/12/19 07:58

> join: 無効なフィールド番号です: `{1-18}' にもエラーが出てますね。 おそらく、範囲指定をしたいと言う事だと思います。 joinの機能ではなくシェルの機能で、{1..18}ならOKです。その際、必ずフィールドはカンマでなく空白で区切ってください。 {20..}のような終わり指定無しは無理。
kozica

2018/12/20 02:45

指摘ありがとうございます! 参考になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問