sh -version
GNU sh, version 1.14.7(1)
cat file
:
21 / Oct / 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.x.x,www.google.co.in,http://www.google.co.in/ads/user-lists/998935479/
但我想要输出如下
21 /月/ 2013,21:29:?29,10.104.x.x,www.google.co.in,http://www.google.co.in/ads/user-lists/998935479/
我想在sap-rate值中分割日期和时间。请帮帮我。
答案 0 :(得分:1)
使用sed:
grep -i http test.txt | awk -F " " '{print $1","$3","$4","$5}' | sed 's/:/,/'
这是非常脆弱的,因为它假定第一个:
需要成为,
,但似乎在给定您的输入时它始终如此。
答案 1 :(得分:0)
你不需要grep|awk
,如果你选择了awk,它可以为你做所有事情:
awk -v OFS="," '/http/{sub(/:/,",",$1);print $1,$3,$4,$5}' file
答案 2 :(得分: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
您可以将/[hH][tT][tT][pP]/
替换为/${YourVariable}/
在这种情况下,在shell
[aA]
版本