我正在尝试为日志文件的每一行提取 2 个模式之间的字符串
例如
some_string: stuff_i_am_interested_in some_other_string
some_string: stuff_i_am_interested_in some_other_string
some_string: stuff_i_am_interested_in some_other_string
some_string: stuff_i_am_interested_in some_other_string
有办法得到吗stuff_i_am_interested_in
?
答案1
$ cut -d' ' -f2 file
stuff_i_am_interested_in
stuff_i_am_interested_in
stuff_i_am_interested_in
stuff_i_am_interested_in
如果这不是您所需要的全部,请编辑您的问题以澄清您的要求并提供更真正具有代表性的示例输入/输出。
答案2
和grep
:
grep -Po 'some_string: \K.*(?= some_other_string)' file
grep -Po '(?<=some_string: ).*(?= some_other_string)' file
和sed
:
sed -n 's/some_string: \(.*\) some_other_string/\1/p' file
如果some_string
不在行首也不some_other_string
在行尾,您可以执行以下操作:
sed -n 's/.*some_string: \(.*\) some_other_string.*/\1/p' file
答案3
你可以用 sed 来做到这一点:
cat logfile | sed -n -e 's/some_string: //p' | sed -n -e 's/ some_other_string//p'