码迷,mamicode.com
首页 > 系统相关 > 详细

shell

时间:2015-07-27 20:37:10      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

grep

1.找到本目录及子目录下含有该字符串的文件:    grep "text" . -R -n   

2. grep -i   忽略大小写

3.grep "main()" . -r  --include *.
{c,cpp}

只返回后缀为.c  .cpp的文件

4.有时候需要用xargs来切分输入参数,xargs默认是按照空格切分,但是比如有时候文件名作为参数,一个文件名中含有空格,导致该文件被切分成2个。此时采用

grep "test" file* -lZ | xargs -0 rm      note:  -lZ指的是在每个参数后添加一个 0  字符来辨别每个参数结束。  xargs -0  用来读取。

cut

1.cut -f2,4 student_data.txt    截取student_data.txt文件的第二个第四列

2.cut -c1-5 range_fields.txt  截取文件的前5个字符,     -c代表字符    -b代表字节   -f代表自定义的域

sed

介绍: stream editor。一款非常强大的文本处理工具,主要用来处理文本替换。

1.使用正则来替换文本

  sed ‘s/pattern/repalce_string/‘  file    该指令只替换第一个匹配的字符串,

  sed ‘s/pattern/repalce_string/g‘  file   匹配所有出现的字符串

2.清除空行

  sed ‘/$/d‘ file  空行可以采用$来匹配。   /d指的是删除

3.正则的一些匹配用法

  echo this is an example | sed ‘s/\w+/[&]/g‘     结果是:[this] [is] [an] [example]

  echo seven EIGHT | sed ‘s/([a-z]+) ([A-Z]+)/\2 \1/‘   结果是:    EIGHT seven

4.双引号

  $ text=hello
  $ echo hello world | sed "s/$text/HELLO/"
  HELLO world         

  双引号可以表示变量

awk

简介: awk是用来处理数据流的工具,它可以操作行和列,它支持很多内置的功能,例如:数组,函数。最大的特点就是灵活。

awk命令的格式:awk ‘ BEGIN
{; print "start"; }

pattern
{ commands }

END
{ print "end" }

  file       (后面的dile代表输入文件)

awk命令执行的顺序:

   首先执行begin块中的代码,

   然后依次读取文件或者stdin中的一行数据,执行中间代码块中的代码。一直重复直到输入结束。(如果没有中间块,默认的为
{print}



   最后执行end代码块中的内容。

   三个代码块都是可有可无的,optional。

awk的内置函数和变量:

   NR:当前读取的行数

   NF:field的个数

   $0:当前行的内容

   $1:当前行的第一个field的值

   $2:当前行第二个field的值

$ echo -e "line1 f2 f3\nline2 f4 f5\nline3 f6 f7" | \
awk ‘{
   print "Line no:"NR",No of fields:"NF, "$0="$0, "$1="$1,"$2="$2,"$3="$3
}‘
Line no:1,No of fields:3 $0=line1 f2 f3 $1=line1 $2=f2 $3=f3
Line no:2,No of fields:3 $0=line2 f4 f5 $1=line2 $2=f4 $3=f5
Line no:3,No of fields:3 $0=line3 f6 f7 $1=line3 $2=f6 $3=f7

实例:将第一列的数字求和

$ seq 5 | awk ‘BEGIN
{ sum=0; print "Summation:" }


{ print $1"+"; sum+=$1 }

END
{ print "=="; print sum }


Summation:
1+
2+
3+
4+
5+
==
15

向awl传递一个外部的参数:

$ VAR=10000
$ echo | awk -v VARIABLE=$VAR   ‘
{ print VARIABLE }


10000

   也可以这么写:

$ var1="Variable1" ; var2="Variable2"
$ echo | awk ‘
{ print v1,v2 }

‘ v1=$var1 v2=$var2
Variable1 Variable2

getline函数:  获取文件的下一行

过滤器:

$ awk ‘NR < 5‘ # first four lines
$ awk ‘NR==1,NR==4‘ #First four lines
$ awk ‘/linux/‘ # Lines containing the pattern linux (we can specify regex)
$ awk ‘!/linux/‘ # Lines not containing the pattern linux


awk自身支持的函数:

length(string) : This returns the string length.

index(string, search_string) : This returns the position at which
search_string is found in the string.

split(string, array, delimiter) : This stores the list of strings generated
by using the delimiter in the array.

substr(string, start-position, end-position) : This returns the
substring created from the string by using the start and end character offsets.

sub(regex, replacement_str, string) : This replaces the first occurring
regular expression match from the string with replacment_str .

gsub(regex, replacment_str, string) : This is similar to sub() , but it
replaces every regular expression match.

match(regex, string) : This returns the result of whether a regular expression
(regex) match is found in the string or not. It returns a non-zero output if a match is
found, otherwise it returns zero. Two special variables are associated with match() .
They are RSTART and RLENGTH . The RSTART variable contains the position at which
the regular expression match starts. The RLENGTH variable contains the length of the
string matched by the regular expression.

shell

标签:

原文地址:http://www.cnblogs.com/quan-qunar/p/4680953.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!