私は、次の機能を持っている:シェル関数の引数に基づいて条件付きgrepを実行するには?
function long_command() {
cat $1 | grep -vE '[a-fA-F0-9]{5}' | \
cat -n | sed -e 's/ //g' | \
sed -e 's/^ *//g' | \
sort -k 3,3 -k 1n,1n | \
uniq -f 2 | \
sed -e 's/^[0-9]\{1,\} //' | \
grep -Ev '^\s*PATTERN\s+' | \
cat -n
}
コマンドの最初の部分は、いくつかのものをフィルタリングします。コマンドの最後の部分では、最後にcat -n
にパイプする前に、$2
が設定されていて、それがVALUE
と等しいとする場合にのみ、grep -Ev '^\s*PATTERN\s+'
を使用してフィルタリングしたいと思います。どうやってやるの?
これは動作しません:
function long_command() {
cat $1 | grep -vE '[a-fA-F0-9]{5}' | \
cat -n | sed -e 's/ //g' | \
sed -e 's/^ *//g' | \
sort -k 3,3 -k 1n,1n | \
uniq -f 2 | \
sed -e 's/^[0-9]\{1,\} //' | \
if [ "$2" -eq "VALUE" ]; then grep -Ev '^\s*PATTERN\s+'; fi | \
cat -n
}
私はエラーを取得する:
-bash: [: : integer expression expected
場合にcat -n
の場合、パイプの結果を使用するWhat't正しい方法?
ご注意いただきありがとうございます。
あなたが効率的にコマンドラインユーティリティを使用する方法を学習する必要があります。そのパイプは1つまたは2つのコマンドに単純化することができます。関連する入力データと予想される出力を追加すると、どのように表示することができますか – hek2mgl