八 11
2
linux shell 编程
awk
找出第一列重复的行 awk -F’\t’ ‘{a[$1]++;if(a[$1] > 1){print $0};}’ pm.txt
`awk -F\”\\t\” ‘{ if (NF> 0 && \$12 != “-”) {print \$12\”\\t\”\$11} }’ $cookie_sort_file_path/cookie_sort*.log > url.log`;
找出第一行的元素个数:
awk ‘{if(length(a[$1])==0){a[$1]=0;num++;}} END{print num}’ opentc_top_site.20110709
每行的第一个字段都是url,第二个字段是ruleid,找出每个ruleid影响的url数目。
awk ‘{a[$2]++}END{for (j in a) if(a[j] > 10000 ){print j,a[j]}}’ mask_url_hadoop.1
awk脚本是由模式和操作组成的:pattern {action} 如$ awk ‘/root/’ test,或$ awk ‘$3 < 100′ test。
Sed
每行插入一行代码 echo “\n”; sed a’echo “\\n”;’ str.php > str2.php
将文件中的非打印字符用ASCII码打出:sed l str.php
打印出含有LC的行: sed -n -e ‘/.*LC.*/p’ str.php
将str.php含有LC的行,中的TIME替换成tttttttt: sed -e ‘/LC/s/TIME/tttttttttttttttt/’ str.php
Shell
for i in 09 10 11 12 13 14 15 16 ;do mkdir 201003$i ;done
sh -x filename
Shell编程:
设置编程时的不同模式;
${var:-value};
双圆括号结构:允许算术扩展和赋值、在Bash中使用C语言风格变量操作的一种处理机制;
local_backup_path=”$(pwd).backup”
current=`date “+%Y%m%d%H%M%S”`
enca
enca -L zh_CN file 检查文件的编码
enca -L zh_CN -x UTF-8 file 将文件编码转换为”UTF-8″编码
enca -L zh_CN -x UTF-8 < file1 > file2 如果不想覆盖原文件可以这样
sort
`sort result.log | uniq -c | sort -gr > result_sort.log`;
Grep
Grep -E http://[^/]*$
在命令提示符下无法直接按TAB键输入制表符,你是怎么输出来的?
先按 CTRL+V,再按 Tab 键
Vimdiff
-O 垂直显示 -o 水平上下显示
]c 跳到下一个差异点 [c跳回上一个差异点
dp 把一个差异点中当前文件的内容复制到另一个文件里。
Do 把另一个文件的内容复制到当前行中。
:diffupdate 手工来刷新比较结果。
cat sql |mail -s “请验证” yanlichun@baidu.com
perl
查看已经安装的perl包,140行的代码
安装NET::SSH
perl -MCPAN -e shell
cpan> install NET::SSH
i /NET::SSH/
ssh
远程执行grep时,正则表达式要经过转义。(是否是所有命令都要对参数转义,不止是grep?)
Ssh host Grep –E \\\burllist filename
Grep
OK: grep -E “\b以下输fdf ” /home/mis/mis/urlmask/file/sensitive_government_exact
NO: grep -E “\b斤斤计较斤斤计较斤斤计较斤斤计较 ” /home/mis/mis/urlmask/file/sensitive_government_exact
