grep awk

grep -b6 'UPDATE award SET remain = remain - 1 WHERE id= ***' logbin.000039.log | grep 'INSERT INTO score_exchange_log'

grep -a2 'INSERT INTO award_exchange_log' logbin.000040.log |grep '"***"'


grep "cpaint_function=ajax_change_award" 1610 |grep http://award.snjifen.com/award_change.php\?id=528 --color


grep '09/Nov/2010:16:15' access_log.20101109 |grep -Ev "image|style" >1615

grep -a2 'INSERT INTO award_exchange_log' logbin.000040.log |grep '"528"'

grep '/jinjin' acc_log.20110109 |grep -Ev "css|images" |less

grep '/jinyin HTTP/1.1' acc_log.20110109 -c 访问数

ll logbin.*.log -h 文件列表显示每个文件大小


awk -F"," '{print $1}' jisuandaoda_5_xian.txt >jisuandaoda_5.1.txt

for i in `seq -w 00 60` ; do echo -n "$i : " ; grep -c "2010:16:$i" 162.log ; done

grep -a1 'award_exchange_log' 45.log | grep '530' | wc -l
39

grep -R "UPDATE award SET remain = remain - 1 WHERE id=" *

-R的意思是递归的对目录下的所有文件(包括子目录)进行 grep。
比如 grep -R main src
就会搜索src目录下所有文件中是否包含 main 这个字符串。

[color=red]例子[/color]:^_13400602921^_ 前后有字符串 可以awk截取
awk '{print substr($1,3,11)}' mm_xue_11_test.csv

[color=red]例子[/color]:470555^IM-7M-"M-JM-G^I18729180294^IM-IM-BM-NM-w^IM-NM-wM-0M-2M-JM-P^I^I2.01011E+13^I2.01011E+13^I1^Iheaven0000477@sohu.com^M$
通过cat -A 全部大印显示

grep -w -o '1[358][0-9]\{9\}' a_cyonlineuser_22_20101201.txt

cat -A /data/website/tmp/file/a_cyonlineuser_22_20101201.txt |awk -F"_" '{print $3}' |[color=red][b]sed [/b][/color]'s/\^//g'|less


刪除沒有內容的空白行:
g/^$/d


刪除包含有空格组成的空白行:
g/^\s*$/d


除以空格或tab开头到结尾的空白行:
g/^[ |\t]*$/d

vi中怎么删除重复行?
使用冒号命令
:sort u


有时候,我们在 Linux 中打开曾在 Win 中编辑过的文件时,会在行尾看到 ^M 字符。虽然,这并不影响什么,但心里面还是有点不痛快。如果想要删除这些 ^M 字符,可以使用 Vim 来轻松搞定它。

在 Vim 的命令模式中输入

:%s/^M$//g

后,回车即会自动删除该文件中的所有 ^M 字符。

那么,这句命令到底是什么意思呢?% 指匹配整个文件,s 是置换的意思,

^M 注意要用 Ctrl + V Ctrl + M 来输入,M 后面的 $ 代表匹配行尾的内容,最后的 g 则表示每行中匹配到的内容都要置换。

理解了命令的含义,就好变通使用了,比如说,要将某个文件中的 Vim 全部替换成 VIM,则可以使用这样的命令:

:%s/Vim/VIM/g

另外的一个解决方案是使用dos2unix命令: dos2unix xxxx.txt

$ awk '/^(no|so)/' test-----打印所有以模式no或so开头的行。

$ awk '/^[ns]/{print $1}' test-----如果记录以n或s开头,就打印这个记录。

$ awk '$1 ~/[0-9][0-9]$/(print $1}' test-----如果第一个域以两个数字结束就打印这个记录。

$ awk '$1 == 100 || $2 < 50' test-----如果第一个或等于100或者第二个域小于50,则打印该行。

$ awk '$1 != 10' test-----如果第一个域不等于10就打印该行。

$ awk '/test/{print $1 + 10}' test-----如果记录包含正则表达式test,则第一个域加10并打印出来。

$ awk '{print ($1 > 5 ? "ok "$1: "error"$1)}' test-----如果第一个域大于5则打印问号后面的表达式值,否则打印冒号后面的表达式值。

$ awk '/^root/,/^mysql/' test----打印以正则表达式root开头的记录到以正则表达式mysql开头的记录范围内的所有记录。如果找到一个新的正则表达式root开头的记录,则继续打印直到下一个以正则表达式mysql开头的记录为止,或到文件末尾。

转摘 awk 学习笔记 [url]http://www.linux.gov.cn/shell/awk.htm[/url]

awk 小记 [url]http://www.chinaunix.net/jh/24/691456.html[/url]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值