shell脚本

来源:互联网 发布:数据挖掘的特点 编辑:程序博客网 时间:2024/06/05 00:38

1. grep

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

1.命令格式:

grep [option] pattern file

2.命令功能:

用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活

3.命令参数:

  

-A<显示行数>   --after-context=<显示行数>   #除了显示符合范本样式的那一列之外,并显示该行之后的内容。    

-B<显示行数>   --before-context=<显示行数>   #除了显示符合样式的那一行之外,并显示该行之前的内容。   

-C<显示行数>    --context=<显示行数>或-<显示行数>   #除了显示符合样式的那一行之外,并显示该行之前后的内容。      

-i    --ignore-case   #忽略字符大小写的差别。   

-v   --revert-match   #显示不包含匹配文本的所有行。   

grep babel package.json    "build": "babel src/ -d lib/ --source-maps",    "babel-cli": "^6.26.0",    "babel-preset-env": "^1.6.0",    "babel-preset-flow": "^6.23.0",    "babel-preset-stage-0": "^6.24.1",




2.cut

一两句话描述一下cut命令吧!
正如其名,cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。

cut是以每一行为一个处理对象的,这种机制和sed是一样的。

cut命令主要是接受三个定位方法:


第一,字节(bytes),用选项-b


第二,字符(characters),用选项-c


第三,域(fields),用选项-f :用-d来设置间隔符,然后用-f来设置我要取的是第一个域

flowStudy liyan$ grep babel package.json | cut -d : -f1    "build"    "babel-cli"    "babel-preset-env"    "babel-preset-flow"    "babel-preset-stage-0"flowStudy liyan$ grep babel package.json | cut -d : -f2 "babel src/ -d lib/ --source-maps", "^6.26.0", "^1.6.0", "^6.23.0", "^6.24.1",




-d后间隔符为冒号,-f1取第一个域,-f2取第二个域


3.sed

Linux sed命令是利用script来处理文本文件。

sed可依照script的指令,来处理、编辑文本文件。

Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

语法

sed [-hnV][-e<script>][-f<script文件>][文本文件]
sed 's/要被取代的字串/新的字串/g'

例子:

test.json:

"devDependencies": {    "babel-cli": "^6.26.0",    "babel-preset-env": "^1.6.0",    "babel-preset-flow": "^6.23.0",    "babel-preset-stage-0": "^6.24.1",    "flow-bin": "^0.53.1"  }

shell:

sed 's/babel/baXXX/g' test.json > test1.json

新生成了test1.json 内容如下:

"devDependencies": {    "baXXX-cli": "^6.26.0",    "baXXX-preset-env": "^1.6.0",    "baXXX-preset-flow": "^6.23.0",    "baXXX-preset-stage-0": "^6.24.1",    "flow-bin": "^0.53.1"  }





4. | 

管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard 
error 信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入 standard input.

cmd1 | cmd2 | cmd3

command1正确输出,作为command2的输入 然后comand2的输出作为,comand3的输入 ,comand3输出就会直接显示在屏幕上面了。

通过管道之后:comand1,comand2的正确输出不显示在屏幕上面

5.重定向

1.输出重定向:

Command > filename把标准输出重定向到一个新文件中Command >> filename把标准输出重定向到一个文件中(追加)Command > filename把标准输出重定向到一个文件中Command > filename 2>&1把标准输出和错误一起重定向到一个文件中Command 2 > filename把标准错误重定向到一个文件中Command 2 >> filename把标准输出重定向到一个文件中(追加)Command >> filename2>&1把标准输出和错误一起重定向到一个文件(追加)

2.输入重定向:

Command < filename > filename2Command命令以filename文件作为标准输入,以filename2文件作为标准输出Command < filenameCommand命令以filename文件作为标准输入Command << delimiter从标准输入中读入,知道遇到delimiter分界符


原创粉丝点击