提取双引号之间的值

use*_*658 23 awk

我的查询是提取双引号之间的值""。样本输入是:

10.219.41.68 - - - [11/Jun/2014:10:23:04 -0400] Sec:0 MicSec:1797 "GET /balancer-manager HTTP/1.1" 200 28980 "-" "curl/7.15.5 (i386) -redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5"

我有很大的日志文件,所以每行的值可能会有所不同,需要提取第一次出现双引号之间的值......

预期输出:

GET /balancer-manager HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

任何人有任何想法,然后请提出建议。

Mic*_*mer 32

您可以仅用cut于此:

$cut -d '"' -f2 < logfile
GET /balancer-manager HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

-d '"'告诉cut使用双引号作为其字段分隔符。-f2告诉它取第二个字段,它在第一个和第二个引号之间 - 或者第一个带引号的字符串,正是你想要的。


小智 12

一种使用方式 awk

awk -F'"' '$0=$2' file
Run Code Online (Sandbox Code Playgroud)

如果出于某种荒谬的原因您的 HTTP 方法实际上是0并且您想输出这些

awk -F'"' '{$0=$2}1' file
Run Code Online (Sandbox Code Playgroud)