2013-10-24 177 views
0
sh -version 
GNU sh, version 1.14.7(1) 

cat file字符串編輯在shell腳本

21月/ 10月/ 2013:21:29:29 0530 10.104.x.x www.google.co.in http://www.google.co.in/ads/user-lists/998935479/

我有上述圖案

grep -i http file | awk -F " " '{print $1","$3","$4","$5}' > file2 

文件與上述命令的輸出低於

21月/ 10月/ 2013:21:29:29,10.104.xx,萬維網.google.co.in,http://www.google.co.in/ads/user-lists/998935479/

,但我要像低於輸出

21月/ 10月/ 2013,21:29:29,10.104.x.x,www.google.co.in,http://www.google.co.in/ads/user-lists/998935479/

我想分解日期和時間的速率值。請幫幫我。

+1

那麼,唯一的區別是'2013'後的冒號?花了我一段時間才發現... – tjameson

+0

是的,假設再添加一列到付費日期和時間 –

回答

1

使用sed

grep -i http test.txt | awk -F " " '{print $1","$3","$4","$5}' | sed 's/:/,/' 

這是非常脆弱的,因爲它假設第一:需求,成爲一個,,但它似乎永遠是這樣,給你的輸入。

0

你不需要grep|awk,如果您選擇的awk,它可以爲你做的一切:

awk -v OFS="," '/http/{sub(/:/,",",$1);print $1,$3,$4,$5}' file 
0
sed -n " 
/[hH][tT][tT][pP]/ { 
    s/^\([^ ]\{1,\}\) [^ ]\{1,\} \(.*\)/\1,\2/p 
    }" File 

sed -n " 
/[hH][tT][tT][pP]/ { 
    s/ +[0-9]\{1,} /,/p 
    }" File 

可以用/${YourVariable}/ 取代/[hH][tT][tT][pP]/在這種情況下,在shell中創建[aA]版本的變量內容