grep
该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等,比如可以加在ps, tail, cat后面
- grep Nottingham uk-500.txt:在uk-500这个文档行中查找Nottingham所在的记录并显示出来
- more uk-500.txt | grep Nottingham:用管道连接more和grep两个命令,结果与上个命令相同
- more uk-500.txt | grep “Nottingham”:结果与上个命令相同
- grep “West Ward” uk-500.txt:能正确查找出West Ward
- grep West Ward uk-500.txt:第一行会报错,因为不能正确解读空格的意思,只能查找出West##
文件重定向
- 执行程序grep West Ward uk-500.txt,会将默认的错误结果输出到控制台屏幕上,因为STDERR的默认位置为控制台
- 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回??到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。
- 需要注意的是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
参考链接:http://www.runoob.com/linux/linux-shell-io-redirections.html
命令 | 说明 |
---|---|
command > file | 将输出重定向到 file。 |
command < file | 将输入重定向到 file。 |
command >> file | 将输出以追加的方式重定向到 file。 |
n > file | 将文件描述符为 n 的文件重定向到 file。 |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 |
n >& m | 将输出文件 m 和 n 合并。 |
n <& m | 将输入文件 m 和 n 合并。 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 |
- grep West Ward uk-500.txt > myAddresses:将输出重定向到myAdresses文件中,但是错误输出还是在控制台
- grep West Ward uk-500.txt > myAddresses 2>&1:将STDOUT和STDERR都输出到myAdresses文件中
- grep West Ward uk-500.txt > myAddresses 2> myErrors:将错误输出到myErrors文件中
Piping的使用
- more uk-500.txt | grep “Manchester”:在uk-500.txt文件中查找“Manchester”
- more uk-500.txt | grep “Manchester” | wc -l:查找“Manchester”之后统计个数
- more uk-500.txt | grep “Manchester” | sort > manchester.txt:将查找的结果按照所在记录的首字母排序,并输出到文件manchester.txt中
- more uk-500.txt | grep “[Nottingham|Manchester]” :查找了所有包含在[]中的字符,而非字符串
- more uk-500.txt | grep [Nottingham|Manchester] :-bash: Manchester]: command not found grep: Unmatched [ or [^,因为shell想要解读 “grep [Nottingham” ,但解读不出来, “|” 视为一个管道连接 “Manchester]” 命令,因此报错
正则表达式中特殊字符
- * : 代表任意字符(0到多个)
- [ ] : 中间为字符组合,仅匹配其中任一一个字符
- ^string:表示以string开头的字符
- string$:表示以string结尾的字符
- . :表示单个字符
grep
- 它在一个或多个文件中搜索字符串模板。
转译字符 \
- grep "St." uk-500.txt:其中的点表示的是任意单个字符
- grep "St\." uk-500.txt:其中.表示的就是一个点,字面的意思
使用$存放变量值
- export count=23 grep $count uk-500.txt:其中$count指的是23,查找23
- grep ‘$count’ uk-500.txt:查找结果什么都没有,‘’防止了将$进行转换,查找的任然是$count
echo
- echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
显示普通字符
- echo "It is a test":结果 It is a test
显示转义字符
- echo "\"It is a test\"":结果 "It is a test"
显示换行
echo -e "OK! \n" # -e 开启转义
echo "It is a test"
结果:
OK!
It is a test
显示不换行
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"
结果:
OK! It is a test
原样输出字符串,不进行转义或取变量,用单引号(‘)
- echo ‘$name\"‘:结果 $name\"
显示命令执行结果,注意反引号(`)
- echo `date`:结果Thu Jul 24 10:08:46 CST 2014,
- 注意: 这里使用的是反引号 `, 而不是单引号 ‘。结果将显示当前日期
- 反引号(`) 位于键盘的Tab键的上方,起命令替换的作用。命令替换也就是shell能够将一个命令的标准输出插在一个命令行中任何位置。
参考链接:https://www.runoob.com/linux/linux-shell-echo.html
单引号(‘)和双引号(“)
- 如果没有单引号或双引号,shell会把空格后的字符串解释为命令。
- 单引号和双引号的区别。单引号告诉shell忽略所有特殊字符,而双引号忽略大多数,但不包括$、\、`。
实例:
testvalue=100
echo ‘The testvalue is $testvalue‘
The testvalue is $testvalue
echo "The testvalue is $testvalue"
The testvalue is 100
参考链接:https://blog.csdn.net/beginning1126/article/details/8633900
原文地址:https://www.cnblogs.com/Stephanie-boke/p/11711309.html
时间: 2024-11-05 23:21:07