Shell命令

7 篇文章 0 订阅

 

http://ss64.com/bash/

 

grep、sed、awk、perl等对正则表达式的支持的差别
http://hi.baidu.com/afantihome/blog/item/c22f50a4a2b66df99152ee6e.html

shell多进程

“多进程”实现
http://www.cnblogs.com/fly3q/archive/2009/12/30/1636321.html

  #!/bin/bash

  for ((i=0;i<5;i++));do

  {

  sleep 3;echo 1>>aa && echo "done!"

  } &

  done

  wait

  cat aa|wc -l

  rm aa

这个实例实际上就在上面基础上多加了一个后台执行&符号,此时应该是5个循环任务并发执行,最后需要3s左右时间。

wait是等待前面的后台任务全部完成才往下执行,否则程序本身是不会等待的,这样对后面依赖前面任务结果的命令来说就可能出错。例如上面wc -l的命令就报错:不存在aa这个文件。

tr

删除回车符: tr -d "/n"
替换回车符为空格: tr "/n" " "

sed

将连续空白字符替换为空格:sed 's/[[:space:]]/+/ /g'

if判断

1 字符串判断

str1 = str2      当两个串有相同内容、长度时为真
str1 != str2      当串str1和str2不等时为真
-n str1        当串的长度大于0时为真(串非空)
-z str1        当串的长度为0时为真(空串)
str1           当串str1为非空时为真

2 数字的判断

int1 -eq int2    两数相等为真
int1 -ne int2    两数不等为真
int1 -gt int2    int1大于int2为真
int1 -ge int2    int1大于等于int2为真
int1 -lt int2    int1小于int2为真
int1 -le int2    int1小于等于int2为真

3 文件的判断

-r file     用户可读为真
-w file     用户可写为真
-x file     用户可执行为真
-f file     文件为正规文件为真
-d file     文件为目录为真
-c file     文件为字符特殊文件为真
-b file     文件为块特殊文件为真
-s file     文件大小非0时为真
-t file     当文件描述符(默认为1)指定的设备为终端时为真

3 复杂逻辑判断

-a         与
-o        或
!        非

判断文件是否存在

http://canofy.javaeye.com/blog/252289

 

删除

 

删除空格

sed s/[[:space:]]//g  filename 

 

 

删除空行

sed /^$/d                 filename       

 

 

删除或html标签

删除: sed -e 's/<[^>]*>//g'

匹配: grep -Eo "<[^>]*>"

 

 

上面的正则无法处理标签中含有> 的情况(如:< input name=dir value="> " >)。改进后的为:

匹配:grep -Eo "<(/"[^/"]*/"|'[^']*'|[^'/">])*>"

 

 

合并

合并第一列相同的行:

awk '{if($1 in a){printf "|"$2}else{printf "%s%s %s", (NR>1)?"/n":"", $1, $2;a[$1]=$2}}END{print ""}'

 

 

合并两个文件同行的列:

paste file1 file2

pr -m -t -s/ file1 file2

 

 

添加分隔符合并文件:

paste -d '*'

-d符号就可以设定间隔符

paste -s -d "*"

-s就是以每个文件为一个处理单元

 

分隔 

 split

 -l LINES 



指定分割后每个文件行数
-b BYTES 



指定分割后每个文件大小

数值

数值加减:

for((i = 0; i <= 10; i++));

do

 ni=$(($i + 1))


 echo "ni="$ni


 ni=$(expr $i + 1)


 echo "ni="$ni


 ni=`expr $i + 1`


 echo "ni="$ni

done

注意:=号两边不能有空格,expr后的算式运算符两边必须有空格隔开。

 

 补齐0

echo 1 | awk '{for(i=1;i<13;i++){printf "%.3d/n",i}}'

echo 1 | awk '{for(i=1;i<13;i++){print "0000"i}}' | rev |  cut -c -3 | rev

 

 

时间

休眠sleep:

sleep 1    睡眠1秒
sleep 1s    睡眠1秒
sleep 1m   睡眠1分
sleep 1h   睡眠1小时

 

Sort

-g 可排序科学记数法表示的

-S 设置使用内存

-T 临时文件保存目录

 

 

循环

 

n=60
while [ ${n} -gt 4 ]; do
    echo ${n}
    m=`expr ${n} - 7`
    while [ ${m} -ge 4 ]; do
        echo ${n}" "${m}

        m=`expr ${m} - 7`
    done
    n=`expr ${n} - 7`
done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值