grep以特定字符串开头的行

Jon*_*ews 6 regex string bash awk grep

我想找到一个以特定字符串开头的文件中的所有行.问题是,我事先并不知道字符串中有什么.该值存储在变量中.

天真的解决方案如下:

grep "^${my_string}" file.txt;
Run Code Online (Sandbox Code Playgroud)

因为如果Bash变量my_string包含任何正则表达式特殊字符,grep就会哭,并且每个人都会有糟糕的一天.

你不grep想哭,是吗?

anu*_*ava 5

您应该使用函数awk代替grep非正则表达式搜索index:

awk -v s="$my_string" 'index($0, s) == 1' file
Run Code Online (Sandbox Code Playgroud)

index($0, s) == 1 确保仅在开始时找到搜索字符串.