あるかどうかをチェックし、私は次のコードスニペットシェル:すべての出力文字列が同じ
$ mount | grep '^/dev'| awk '{print $1}'
/dev/disk1s1
/dev/disk1s4
を持っている今、私は、出力ラインが同じ値または異なるを持っているかどうかを確認する必要があります。 したがって、上記の場合は異なります。 [disk1s1とdisk1s4]。どのようにこれをシェルで達成できるか。
私は結果に2つ以上の行があるかもしれません。
あるかどうかをチェックし、私は次のコードスニペットシェル:すべての出力文字列が同じ
$ mount | grep '^/dev'| awk '{print $1}'
/dev/disk1s1
/dev/disk1s4
を持っている今、私は、出力ラインが同じ値または異なるを持っているかどうかを確認する必要があります。 したがって、上記の場合は異なります。 [disk1s1とdisk1s4]。どのようにこれをシェルで達成できるか。
私は結果に2つ以上の行があるかもしれません。
テストし、何か好きではない:
if (($(mount | grep -o '^/dev[^ ]*' | sort -u | wc -l) > 1))
then
echo different values
fi
若干変更したパターンと一緒のgrepで-oオプションは、最初のフィールドだけを返します。 sortの-uオプションは重複をスローします。
あなたが任意の重複の結果を得た場合、出力は「同じ」
$ mount | awk '/^\/dev/{print $1,a[$1]?"same":"";a[$1]=1}'
/dev/sdb1
/dev/sdb3
/dev/sda1
/dev/sdb1 same
/dev/sdb3 same
簡単な説明、
grep
を使用する必要はありませんと付け加えなり、以下のようにあなたのコマンドを変更してくださいコマンド、原因awk
grep
できることを行うことができます。/^\/dev/
:中$1
を設定することを忘れないでください:[$ 1]そうa[$1]=1
何もしない、$1
後ろにプリント "同じ"、設定されている場合、検索ラインは '/ devの'a[$1]?"same":""
で始まります最終。
'awk'を使って、' grep'でできることはほとんどできます。だから、 'grep'と一緒に' awk'が過剰です。また、あなたの結果はどうでしょうか。それは 'same'または' different'の単なる行ですか? – sjsam