regex - Linux 脚本 + 正则表达式

标签 regex linux unix

我正在尝试编写一个脚本,该脚本接受一个字符串,然后读取文件 test 并将以模式开头的名称(忽略大小写)打印到另一个文件,测试文件包含以下数据:

u001:x:Laith_Budairi
u002:x:laith_buda
u003:x:bara_adnan
u004:x:Basim_khadir
u005:x:bilal_jarrar

这就是我尝试做的:

echo type a pattern to find
read s
cat test | cut -d: -f3 | grep -i '^$s' > printfile

但它没有在文件中打印任何内容,我该怎么办?

最佳答案

'...' 防止变量扩展。只需将 '^$s' 更改为 "^$s" 即可,但还有其他需要改进的地方:

  1. 您不需要cat,您可以发送cut文件名:

    cut -d: -f3 测试 | grep ...

  2. 你并不真的需要cut,你可以立即grep:

    grep -i "^u...:x:$s"test > printfile

不过,如果你只有一个名字部分那就没问题了。

关于regex - Linux 脚本 + 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49964056/

相关文章:

unix - "tar czf file.tar.gz dirname"或 "tar -czf file.tar.gz dirname"?

regex - Perl 在逗号上拆分列表,除非在括号内?

php - 如何在 php 正则表达式中的下划线后创建大写字母

python - 如何使用 Python Regex 查找首字母大写的所有单词

linux - 使用文件内容创建新目录

PHP 和构建过程 (/.configure, make and install) : orientation, 请

linux - arm-eabi-gcc : cannot find entry symbol _start

linux - Impty grep 导致循环

javascript - 使用 JavaScript 从字符串中删除这两个词?

c++ - Linux 上的性能分析