regex 如何在Linux文件循环的每一行中找到string的匹配部分,然后将此匹配值添加到变量中?

ulydmbyx  于 2023-03-13  发布在  Linux
关注(0)|答案(1)|浏览(114)
for line in $script
    do
    username=grep ‘^\[a-z\]\[^:\]*:’ $line
    dir=grep ‘:(/\[^:\]*):/\[^:\]\*$’ $line

    echo "line 1:" $username $dir
    done

基本上我有一个文件脚本,我想遍历每一行,然后对于每一行,我只想输出行中符合正则表达式条件的部分到一个变量中,这里应该有两个变量,它们是文件特定行的不同部分,然后打印这两个变量
我尝试了上面的代码以及一些小的修改,但是没有一个能用,因为Linux中的grep应该是针对一个文件的,所以我不能只通过一行进行grep
我甚至尝试专门创建一个“linefile”,以便可以如下所示使用grep regex,但仍然无法正常工作

for line in $script
    do
    touch linefile
    echo $line >> linefile
    username=grep ‘^\[a-z\]\[^:\]*:’ $linefile
    dir=grep ‘:(/\[^:\]*):/\[^:\]\*$’ $linefile
    rm linefile
    echo "line 1:" $username $dir
    done
whlutmcx

whlutmcx1#

尝试使用echo "$line" | grep '^\[a-z\]\[^:\]*:'。基于this post
另外,我不知道你想用第二个正则表达式找到什么,但似乎找不到什么明显的东西。也许使用ERE(grep -E)比BRE更容易?

相关问题