1. 程式人生 > >shell從一行文件中獲取兩列值

shell從一行文件中獲取兩列值

edi 使用 缺點 表達式 found 10.6 work redis 則表達式

  • 日誌文件內容如下:
    logid=2210608107 worker_id=140610281404160 optime=1452598610.631276 msg=service+not+found+in+share+memory service=Redis_doc_push
  • 通過awk獲取制定的列後輸出,缺點是如果日誌打印的格式不帶空格,則不能使用
    cat xxx.log | grep -oP "logid=\d+.*service=\w+" | awk -F‘ ‘ ‘{print $1,$NF}‘
  • 用正則表達式捕獲組,用sed將整行替換為兩個組的值
    cat xxx.log | sed -r "s/.*?logid=([0-9]+).*?service=(\w+).*?/\1,\2/"
  • shell從一行文件中獲取兩列值