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
1条答案
按热度按时间whlutmcx1#
尝试使用
echo "$line" | grep '^\[a-z\]\[^:\]*:'
。基于this post。另外,我不知道你想用第二个正则表达式找到什么,但似乎找不到什么明显的东西。也许使用ERE(
grep -E
)比BRE更容易?