shell脚本

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分界符



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值