文字列をAWKと一致させるには?
文字列があると仮定すると、文字列を[(*.+
含む文字列とのみ一致する必要があります[(*.+
。
文字列はユーザーが入力するため、正規表現をエスケープできる cli ユーティリティを知っていれば機能します。
編集する:
foo[(*.+bar
また、その文字列を含む文字列とも一致する必要があります。
答え1
awk
文字列比較には演算子を使用し==
、index(haystack, needle)
文字列検索には関数を使用してください。
read -r string # user types [(*.+
{ echo 'stuff [(*.+ stuff'; echo ')]*.+'; } | awk -v string="$string" 'index($0, string)'
# output: 'stuff [(*.+ stuff'
答え2
デフォルトでは、awkは""内の文字を文字列として扱い、//内の文字を正規表現として扱います。
[root@me ~]# echo "[(*.+" | gawk '"[(*.+"'
[(*.+
[root@me~]# echo "[(*.+" | gawk '/[(*.+/'
gawk: /[(*.+/
gawk: ^ unterminated regexp
gawk: fatal: Unmatched [ or [^: /[(*.+//