您可以使用此awk
:
s='[CURRENT_DATE][THREAD_ID][PROCESS_NAME]Some random text here'
awk -F '\\]\\[' '{print $2}' <<< "$s"
THREAD_ID
-F '\\]\\['
将文本][
用作分隔符。
,
这个怎么样? (请注意,在OP使用的awk版本中,多个字符定界符似乎 not 分别在GNU awk 4中不可用。)
pattern='[CURRENT_DATE][THREAD_ID][PROCESS_NAME]Some random text here'
echo $pattern
awk -F '[' '{print substr($3,1,length($3)-2)}' <<< "$pattern"
,
awk的不同版本的行为方式不同。在不知道您正在运行什么的情况下,很难说出现有代码为何如此运行。
您已经知道,使用[][]
或仅使用[
的字段分隔符,每行的开头都有一个空字段。相反,我会尝试这样做:
awk -F']' '{gsub(/\[/,""); print $2}' input.log
这只是去掉了左方括号,并使用它的伙伴作为您的字段定界符。使用]
而不是[
的好处是它使$ 1成为您的第一个字段。
本文链接:https://www.f2er.com/3146786.html