随笔分类 - Shell
摘要:本文转自GeekFan,感觉确实比较极客范啊,[TAB][TAB]补全都知道,但是你知道可以定制化补全吗?-------------------------------------------------------------------------------------------------------本文由极客范-踏雁寻花翻译自Balakrishnan Mariyappan。欢迎加入极客翻译小组,同我们一道翻译与分享。转载请参见文章末尾处的要求。在Linux系统中,输入一个命令,再按两次TAB键,就会列出所有以输入字符开头的可用命令。这并不新鲜,很可能你已经知道了这个。这个功能被称作
阅读全文
摘要:之前一直看不懂马尔科夫算法的awk实现。最近学习了awk,基本上能看懂了。C++版的参见这里。#!/bin/awk -f#markov.awk: markov chain algorithm for 2-word perfixesBEGIN { MAXGEN = 10000; NONWORD = "\n"; w1=w2=NONWORD }{ for(i = 1; i <= NF; i++) { #read all words statetab[w1,w2,++nsuffix[w1,w2] ] = $i #print "IN",$i w1 = w2
阅读全文
摘要:awk 使用printf#printf使用类似于C语言#字符转换zhuyupeng@zhuyupeng-PC~$ echo "65" | awk '{printf "%c\n",$0}'Azhuyupeng@zhuyupeng-PC~$ echo "99" | awk '{printf "%f\n",$0}'99.000000#格式化输出#打印名字,左对齐,使用‘-’zhuyupeng@zhuyupeng-PC~$ awk '{printf "%-15s %s\n&
阅读全文
摘要:接上一篇,这里使用的grade.txt 也是和上一篇中的相同。先来总结一下awk内置变量:ARGC 命令行参数个数ARGV 命令行参数排列ENVIRON 支持队列中系统环境变量的使用FILENAME awk浏览文件名FNR 浏览文件的记录数FS 设置输入域分隔符,等价于命令行-F选项NF 浏览记录的域个数NR 已读的记录数OFS 输出域分隔符ORS 输出例句分隔符RS 控制记录分隔符zhuyupeng@zhuyupeng-PC~$ awk '{print NF,NR,$0} END {print F...
阅读全文
摘要:前一篇学习了awk的基本知识,现在来做一些练习加深一下印象。假设我们有这样一个待处理的文件"grade.txt":M.Tansley 05/99 48311 Green 8 40 44 J.Lulu 06/99 48317 green 9 24 26P.Bunny 02/99 48 Yellow 12 35 28J.Troll 07/99 4842 Brown-3 12 26 26L.Tansley 05/99 4712 Brown-2 12 30 28#打印整个文件zhuyupeng@zhuyupeng-PC~$ awk '{print $0}' grad
阅读全文
摘要:awk:好用的数据处理工具awk 也是一个非常棒的数据处理工具!sed 常常用于一整个行的处理, awk 则比较倾向于一行当中分成数个『栏位』(或者称为一个域,也就是一列)来处理。因此,awk 相当的适合处理小型的数据数据处理呢!awk 通常运行的模式是这样的:[root@www ~]# awk '条件类型1{动作1} 条件类型2{动作2} ...' filenameawk 后面接两个单引号并加上大括号 {} 来配置想要对数据进行的处理动作。 awk 可以处理后续接的文件,也可以读取来自前个命令的 standard output 。 但如前面说的,awk 主要是处理『每一行的栏
阅读全文
摘要:1.冒泡排序:#for((i=0;i<10;i++))for i in {0..9} #两种方法都可以do ((a[i]=$RANDOM % 1000)) #产生随机数 echo -n "${a[i]} "donefunction bubble(){ len=${#a[@]} for((i=0;i<len;i++)) do for((j=i;j<len;j++)) do if [ ${a[i]} -ge ${a[j]} ] then tmp=${a[i]} ...
阅读全文
摘要:数组的声明:1.declare -a array # array被当作数组名2.array=( value1 value2 value3 ... )3.array=( [1]=one [2]=two [3]=three ... )4.array[key]=value # array[0]=one,array[1]=two数组提取:zhuyupeng@zhuyupeng-PC ~$ array=( [0]=one [1]=two [2]=three [3]=four )zhuyupeng@zhuyupeng-PC ~$ echo ${array[@]:1}two three fourzhuyup
阅读全文
摘要:该程序实现f(x) = 2f(x-1) + x * x这样一个函数,通过传入 参数 x 计算 表达式的值function f(){ local num="$1" if [ $num = 0 ] #注意与C语言的不同,不是‘==’,条件判断要有空格 赋值等号之间不要加空格 then ret=0 else let "dec=num-1" f $dec let "ret=$? * 2 + $1 * $1" #‘$?’ 是上一次函数的返回值 fi return $ret}for((i=0; i<10; i++...
阅读全文
摘要:要实现的功能C语言编程Linux Shell脚本编程程序/脚本的参数传递intmain(intargc, char**argv){if (argv!= 4) {printf( “Usage: %s arg1 arg2 arg3”,argv[0] );return 1;}printf(“arg1:%s/n”,argv[1]);printf(“arg2:%s/n”,argv[2]);printf(“arg3:%s/n”,argv[3]);return 0;}#!/bin/shif [ $# -lt3 ]; thenecho "Usage: `basename$0` arg1 arg2 a
阅读全文
摘要:1.变量赋值a=123readnameb=$(ls/home)把命令的执行结果赋值给变量2.使用变量(前面用$)echo$aleta=a+1系统变量$0 这个程序的执行名字 $n 这个程序的第n个参数值,n=1...9 $* 这个程序的所有参数 $# 这个程序的参数个数 $$ 这个程序的PID $! 执行上一个背景指令的PID $? 上一个指令的返回值 3.if语句if [ "22" -lt "33" ]注意空格thenecho "22 less than 33"elseecho "no"fi4.case语句#!/
阅读全文
摘要:听说过sed 和 awk 比较强大,专门学习了一下。使用这些shell工具需要一些正则表达式的知识,这里先来了解一些特殊符号的意思:特殊符号代表意义[:alnum:]代表英文大小写字节及数字,亦即 0-9, A-Z, a-z[:alpha:]代表任何英文大小写字节,亦即 A-Z, a-z[:blank:]代表空白键与 [Tab] 按键两者[:cntrl:]代表键盘上面的控制按键,亦即包括 CR, LF, Tab, Del.. 等等[:digit:]代表数字而已,亦即 0-9[:graph:]除了空白字节 (空白键与 [Tab] 按键) 外的其他所有按键[:lower:]代表小写字节,亦即 a-
阅读全文