% cat temp
$$$ hello1
$$ hello2
hello3
## hello4
hello5 $$$
% cat temp | grep "$$$"
Illegal variable name.
% cat temp | grep "\$\$\$"
Variable name must contain alphanumeric characters.
%
$$$
をgrepしたいのですが、結果は
% cat temp | grep <what should go here?>
$$$ hello1
hello5 $$$
%
区別するために、プロンプトを%
としてマークしました。
問題は、シェルが二重引用符で囲まれた文字列内の変数名を展開することです。したがって、"$$$"
の場合、最初の$
で始まる変数名を読み取ろうとします。
一方、単一引用符では、変数は展開されません。したがって、'$$$'
would work – $
が正規表現の行末を示す特殊文字であるという事実がなかった場合。したがって、エスケープする必要があります:'\$\$\$'
。
二重引用符を使用する場合"
または使用しない場合はdouble\: "\\\$\\\$\\\$"
を使用します
cat t | grep \\\$\\\$\\\$
一重引用符で使用する場合は、次を使用できます。
cat t | grep '\$\$\$'
$ grep '\$\$\$' temp
$$$ hello1
hello5 $$$
あなたのコマンドには、スーパーキャットの「猫」がいます。
私のために働く:
user@Host:~$ cat temp | grep '\$\$\$'
$$$ hello1
hello5 $$$
user@Host:~$
^.*[$]{3}.*$
このコマンドと同じ問題
complete -W "\`grep -oE '^[a-zA-Z0-9_.-]+:([^=]|$)' Makefile \`"
無効な変数名。