如何用特殊的字符“grep”中间的文字

时间:2016-02-26 14:33:43

标签: linux bash shell grep

Unexpected header.nextMessage.response.statusLine.statusCode := 403 with 180 unmatched

我想将以下文字格式化为var:nextMessage.response.statusLine.statusCode := 403

我使用了这个命令:exp=$(grep -oP '(?<=header).+(?=with)' text.txt)但它只获取了这部分:.nextMessage.response.statusLine.statusCode没有403。

2 个答案:

答案 0 :(得分:2)

声音就像您只是使用了错误的工具一样,您只需要:

$ var=$(sed 's/.*header\.\(.*\) with.*/\1/' file)
$ echo "$var"
nextMessage.response.statusLine.statusCode := 403

但目前的问题很难从你的问题中看出来。

在尝试确定用于处理文本的UNIX工具时,请记住以下准则:

grep = g/re/p = G ed命令,用于搜索 R egular E xpression和 P rint结果字符串。它不是编辑文本的工具。

sed = S tream ED itor =在各行上执行简单替换。过去必须做更多,仍然有大量奇怪的语言结构让它,但除了s,g和p(与-n)以外的所有东西在20世纪70年代中期发明awk时已经过时了。

awk =通用文本操作工具,在所有UNIX安装上标配sed和grep。将它用于任何不适合grep或sed类别的东西。

答案 1 :(得分:-2)

试试这个

&#xA;&#xA;
  exp = $(grep -oP'(?= nextMessage)。+(?= with)'text.txt)&# xA;  
&#xA;&#xA;

&#xA;&#xA;
  exp = $(cat text.txt | grep -oP'(?= nextMessage)。+(?= with)')&#xA;  
&#xA;&#xA;

都适合我。

& #xA;