我有以下sed命令:
sed -n '/^out(/{n;p}' ${filename} | sed -n '/format/ s/.*format=//g; s/),$//gp; s/))$//gp'
我尝试将其作为一行,如:
sed -n '/^out(/{n;}; /format/ s/.*format=//g; s/),$//gp; s/))$//gp' ${filename}
但是这也显示了我不想要的线条(那些不匹配的线条)。
我所拥有的是一个带有一些字符串的文件,如:
entry(variable=value)),
format(variable=value)),
entry(variable=value)))
out(variable=value)),
format(variable=value)),
...
我只想要在输入后出现的格式行。并删除那些尾随))或),
答案 0 :(得分:1)
您可以使用此sed命令:
sed -nr '/^out[(]/ {n ; s/.*[(]([^)]+)[)].*/\1/p}' your_file
找到out
后,它会前进到下一行(n
)并使用带有s
标志的p
命令仅提取括号内的内容。
说明:
[(]
代替\(
。括号外(
通常表示分组,如果您需要文字(
,则需要将其转义为\(
,或者您可以将其放在括号内。大多数RE特殊字符放在括号内时都不需要转义。([^)]+)
表示一个组("("此处为RE元字符而不是字面括号),由一个或多个(+
)字符组成({{{ 1}})^
(字面右括号),)
反转字符类^