博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell命令
阅读量:2359 次
发布时间:2019-05-10

本文共 2881 字,大约阅读时间需要 9 分钟。

 

 

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        或
!        非

判断文件是否存在

 

删除

 

删除空格

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

你可能感兴趣的文章
小波变换与图像处理文章的分类导航
查看>>
Matlab的曲线拟合工具箱CFtool使用简介
查看>>
一种非线性函数的曲线拟合方法(函数公式: k = A*(T^a)*exp(E/T) )
查看>>
免费设置QQ空间背景音乐的方法
查看>>
今天和一个认识了一年多的朋友第一次见面了
查看>>
【转】爱与选择
查看>>
刀刀漫画合集(共享PDF,RAR,UMD版本和语录)
查看>>
如何正确安装 Google Picasa 2 中文版?
查看>>
刀刀爱情语录
查看>>
【转】技术趋势:Functional Pogramming函数编程风云再起
查看>>
【转帖】全球15个顶级技术类博客
查看>>
【转贴】使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast
查看>>
【转帖】最爱你的男孩总把你挂在心上
查看>>
今天去献血啦,在这里做一回义务献血宣传员吧 ^_^
查看>>
推荐一款免费的桌面搜索软件 VistaGlance 1.2 ,按文件名称建立索引!
查看>>
生活与爱的感悟——“英雄天地”博客摘录
查看>>
Adobe Acrobat 部分文件无法删除的解决办法
查看>>
忘记系统登录密码的简便方法
查看>>
获取论文全文的13种方法
查看>>
把爱传递——写在第10次献血和成为一名义工之际
查看>>