0
sh -version
GNU sh, version 1.14.7(1)

cat file

2013 年 10 月 21 日:21:29:29 +0530 10.104.xx 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/Oct/2013:21:29:29,10.104.xx,www.google.co.in, http://www.google.co.in/ads/user-lists/998935479/ ?

但我想要如下输出

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

我想将日期和时间拆分为 sap-rate 值。请帮我。

4

3 回答 3

1

使用sed

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

这是非常脆弱的,因为它假设第一个:需要成为 a ,,但考虑到您的输入,它似乎总是如此。

于 2013-10-24T10:28:36.817 回答
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]/为,在 shell 中创建变量内容的版本/${YourVariable}/[aA]

于 2013-10-24T13:37:39.990 回答
0

你不需要grep|awk,如果你选择了 awk,它可以为你做所有事情:

 awk -v OFS="," '/http/{sub(/:/,",",$1);print $1,$3,$4,$5}' file
于 2013-10-24T13:35:02.883 回答