で私はbashで次の二つの正規表現を持っています。 2番目には "]"が含まれます。 私は正規表現の始めにこの値を入れます。なぜなら、私はそれを形にすることができないからです。 どのようにして2つの値を同時に一致させることができますか?チェック「」と「]」同時に
0
A
答えて
2
を助けることができる範囲は、両端で閉じられなければならないので、あなたはまた、ブラケット表現の最後で-
を配置することができます。
^[]a-zA-Z0-9,.;:-]*$
他の文字もエスケープする必要はありません。コロン、セミコロン、およびコンマは、正規表現のどの部分にも特別な意味を持ちませんが、期間はブラケット式の中で特別な意味を失います。
0
たぶん、これはあなたに
#!/bin/bash
while read p; do
echo $p | grep -E '\-.*\]|\].*\-' | grep "^[]a-zA-Z0-9,.;:-]*$"
done <$1
user-host:/tmp$ cat test
-i]string
]adfadfa-
string-
]string
str]ing
]123string
123string-
?????
++++++
user-host:/tmp$ ./test.sh test
-i]string
]adfadfa-
1
基本的にはこれを使用することができます:
grep -E '^.*\-.*\[|\[.*\-.*$'
それが一致するゼロまたはそれ以上の任意の文字が続く-
と[
またはゼロ個以上の文字が続く[
とただし-
以来任意の文字を受け入れない場合は、次のように変更する必要があります。
grep -E '^[a-zA-Z0-9,.;:]*\-[a-zA-Z0-9,.;:]*\[|\[[a-zA-Z0-9,.;:]*\-[a-zA-Z0-9,.;:]*$'
0
あなたの投稿の質問。
一つは説明である:
私は、同時に2つの値を一致させる取得できますか?
pattern='^[]a-zA-Z0-9,.;:-]*$'
1つ(または複数の)
-
...OR
...]
が含まれているいずれかの行にマッチします:あなたの二つの範囲を混ぜ、その範囲で行うことができるOR
マッチが、ある...
OR
含まれている文字のいずれか。以下のテストスクリプトでは、これはすべての行(?????
、++++++
、as df gh
を除く)です。タイトルにある2:
...文字列が含まれています「 - 」と「]」を同時に
AND
一致します。それを行うための最も簡単な(最も遅い)方法がある:echo "$line" | grep '-' | grep ']' | grep '^[-a-zA-Z0-9,.;:]*$'
選択のみ行をgrepした最初の二つの呼び出し:
は
-
と、(1または複数の(1または複数)の両方が含まれているが)]
テストスクリプト:
#!/bin/bash
printlines(){
cat <<-\_test_lines_
asdfgh
asdfgh-
asdfgh]
as]df
as,df
as.df
as;df
as:df
as-df
as]]]df
as---df
asAS]]]DFdf
as123--456DF
as,.;:-df
as-dfg]h
as]dfg-h
a]s]d]f]g]h
a]s]d]f]g]h-
s-t-r-i-n-g]
as]df-gh
123]asdefgh
123asd-fgh-
?????
++++++
as df gh
_test_lines_
}
pattern='^[]a-zA-Z0-9,.;:-]*$'
printf '%s\n' "Testing the simple pattern of $pattern"
while read line; do
resultgrep="$( echo "$line" | grep "$pattern" )"
printf '%13s %-13s\n' "$line" "$resultgrep"
done < <(printlines)
echo "#############################################################"
echo
p1='-'; p2=']'; p3='^[]a-zA-Z0-9,.;:-]*$'
printf '%s\n' "Testing a 'grep AND' of '$p1', '$p2' and '$p3'."
while read line; do
resultgrep="$( echo "$line" | grep "$p1" | grep "$p2" | grep "$p3" )"
[[ $resultgrep ]] && printf '%13s %-13s\n' "$line" "$resultgrep"
done < <(printlines)
echo "#############################################################"
echo
printf '%s\n' "Testing an 'AWK AND' of '$p1', '$p2' and '$p3'."
while read line; do
resultawk="$( echo "$line" |
awk -v p1="$p1" -v p2="$p2" -v p3="$p3" '$0~p1 && $0~p2 && $0~p3')"
[[ $resultawk ]] && printf '%13s %-13s\n' "$line" "$resultawk"
done < <(printlines)
echo "#############################################################"
echo
printf '%s\n' "Testing a 'bash AND' of '$p1', '$p2' and '$p3'."
while read line; do
rgrep="$( echo "$line" | grep "$p1" | grep "$p2" | grep "$p3" )"
[[ ($line =~ $p1) && ($line =~ $p2) && ($line =~ $p3) ]]
rbash=${BASH_REMATCH[0]}
[[ $rbash ]] && printf '%13s %-13s %-13s\n' "$line" "$rgrep" "$rbash"
done < <(printlines)
echo "#############################################################"
echo
関連する問題
- 1. Dbをチェックし、同時トランザクション
- 2. ラジオボタンが同時にチェックされます
- 3. ユーザがテキストフィールドに入力するのと同時にチェックする
- 4. エンティティフレームワークIsRowVersion()同時性チェックなし
- 5. netbeans g ++と同時にC++クロスプラットフォーム(macとlinux)同時に
- 6. すべてのチェックボックスをJavascriptで同時にチェックする
- 7. スタックが空であるかどうか同時にチェックする
- 8. 特定のActive-Xチェックボックスのチェックとアンチェックを同時に行うExcelコマンドボタン
- 9. Pygame:同時にKEYDOWNとKEYUPが同時に起動しない
- 10. チェック同じカテゴリ
- 11. オーディオレコードと同時に再生
- 12. borderとimage responsive同時に
- 13. RethinkDBとPHP-RQL同時に
- 14. 同時にWi-Fiとイーサネット
- 15. 同時にWi-FiとLAN
- 16. 同時にマッピングと選択
- 17. globalhostとlocalhost server同時に
- 18. 同時にMongoDBマスターとスレーブ
- 19. エクセル - 検索と同時に
- 20. 同時にリダイレクトとPOST
- 21. RethinkDB - 同時にフィルタリングとマッチング
- 22. (PHP)同じIDを持つ列Aと列Bの値を同時にチェックする方法
- 23. サンライズ/チェック時間
- 24. c#日時チェック
- 25. Sensenet:アップロード時にドキュメントをチェック
- 26. ジョーダ時間、時間と時間を同時に解析する
- 27. 同時fadeInとfadeOut
- 28. 同時ドッカーとバーチャルボックス
- 29. Flaskとgunicornとの同時ユーザーにサービス
- 30. Boost-Asioと同時にサーバーとクライアント
私のgrepの場合、閉じた角括弧 '... \: - ]'の前に '-'を置くとうまくいくように見えます。 –