函数中的命令不能在终端中手动输入

时间:2017-03-17 16:28:23

标签: linux bash parsing text grep

我需要为这样的东西解析文档:

#00 service.
log: servicelogin
pass: password

不用担心,文件已加密并与系统分开:) 所以你看到第一行和第二行都有“服务”,所以这样做:

cat /path | grep -A 3 service

在找到服务两次时返回4行。

但是,在终端输入此命令:

cat /path | grep -A 3 service | grep -A 3 -m 1 "/."

像魅力一样。

但是!因为我需要输入“服务”到底别名还不够好。所以我创建了一个函数:

function do-stuff {
    cat /path | grep -A 3 $1 | grep -A 3 -m 1 "/."
}

它就像第一个没有再解析它一样。

就是这样。谢谢!

=== edit ===

当然,我试图把它结合起来像

cat /path | grep -A 3 -m 1 service

但它也行不通。只返回一行。

=== edit ===

我需要只获得3行,而不是4行,因为它会在下一行再次找到它。

1 个答案:

答案 0 :(得分:0)

你的正则表达式不够具体。也许像是

grep -A 3 '#.* service\.' /path