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 手工来刷新比较结果。

Mail

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

Leave a Comment