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",
正如其名,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 > filename2 | Command命令以filename文件作为标准输入,以filename2文件作为标准输出 |
Command < filename | Command命令以filename文件作为标准输入 |
Command << delimiter | 从标准输入中读入,知道遇到delimiter分界符 |