shell从一行文件中获取两列值

  1. 日志文件内容如下:
    logid=2210608107 worker_id=140610281404160 optime=1452598610.631276 msg=service+not+found+in+share+memory service=Redis_doc_push
  2. 通过awk获取制定的列后输出,缺点是如果日志打印的格式不带空格,则不能使用
    cat xxx.log | grep -oP "logid=\d+.*service=\w+" | awk -F' ' '{print $1,$NF}'
  3. 用正则表达式捕获组,用sed将整行替换为两个组的值
    cat xxx.log | sed -r "s/.*?logid=([0-9]+).*?service=(\w+).*?/\1,\2/"
相关文章
相关标签/搜索