小编Ayl*_*lox的帖子

使用 grep 搜索以美元符号变量开头的行

我发现了很多非常相似的问题,但不完全是这个。我有一个包含以下内容的文本文件(无重复,每行固定 4 个字符):

A1234
G1234
$1234
M1234
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 grep 搜索以字符 $char 开头的行,该行是通过使用 $char 定义搜索项输入的,并将其后面的四个数字分配给 $numbr。它看起来是这样的:

numbr=`grep ^"${char}" file.txt | cut -c 2,3,4,5`
Run Code Online (Sandbox Code Playgroud)

这适用于我需要的任何字符,但美元符号除外,美元符号会使 $numbr 为空。

输入字符 $char 预先定义如下,如果有帮助的话:

char="`dd if=text.txt ibs=1 skip=$skipcount count=1`"
Run Code Online (Sandbox Code Playgroud)

($skipcount 是一个整数)

我尝试了使用和不使用 -E 标志,以及我能找到的转义 $char 值的各种方法。我不需要专门使用 grep,到目前为止我只是使用它取得了最大的成功。

我已经坚持这个问题有一段时间了,所以任何帮助将不胜感激。如果我成功复制了一篇文章,我深表歉意,感谢所有在这里做出贡献的人,我在一两分钟内找到了几乎所有问题的解决方案。

编辑:对我不小心删除了评论的人表示抱歉。要点是他建议回声和管道,类似这样的东西(我认为这是部分的,我需要填写其余的):

echo "${char}" | grep '^\$'
Run Code Online (Sandbox Code Playgroud)

不为我工作。我也不够清楚 - 在 .txt 中的每个字符串(例如 A1234)中,只有第一个字符被分配给 $char。$char 之后的 4 个数字是我需要分配给 $numbr 的内容,并且该字符串可以出现在 .txt 文件中的任何行。每行上不会有其他字节。

command-line bash special-characters grep text-processing

4
推荐指数
1
解决办法
679
查看次数