我的查询是提取双引号之间的值""
。样本输入是:
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)