shell常见命令02

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

猜你喜欢

转载自www.cnblogs.com/Stephanie-boke/p/11711309.html