file.txt
包含:
aa=testing
sss=whoiam
bbb=findme
我使用什么命令来搜索测试并打印它?
预期结果:
# you search testing
答案1
你可以使用grep
:
string=testing && grep "$string" file.txt 2>&1 >/dev/null && echo "you search $string"
当在文件中的某处找到字符串“testing”时,将打印字符串“you search testing” file.txt
。
string=testing
:设置变量$string
grep "$string" file.txt 2>&1
>/dev/null:grep
在文件中搜索该字符串。我们不想要这样的输出,因为 (stdin
和stderr
) 都被重定向到/dev/null
.echo "you search $string"
:如果一切成功,则打印字符串。
只需更改您的模式的变量即可$string
。
附加问题:
如果我想搜索 aa 的值怎么样?
在这个 oneliner 中,aa 的值也是搜索。文件 file.txt 的完整内容已消失。
我的意思是我的参考是 aa 而不是它的值(测试)?
用这个:
string=aa && grep "^$string=" file.txt | awk -F= '{printf "you search %s\n", $2}'
这会搜索 aa 作为变量名称,然后打印值。输出 od 这将是:
you search testing