① 关于linux的几个指令寻求帮助awk、sed、grep 、vim。关于他们之间的关系,哪位用大白话指点一下迷津,不胜
vim 是文本编辑器,类似windows中的notepad,功能很强大,但需要去学习、适应一段时间才能使用得手。
grep命令是一个非常实用的shell命令,其功能为查找与命令后面内容匹配或不匹配的东西,可以与各种命令混合使用,效果很好,如:
1、查看文件a.txt中有"LINUX"这个词的所有行:grep LINUX a.txt
2、查看文件a.txt中没有"LINUX"这个词的所有行:grep -v LINUX a.txt
3、结合管道命令:cat a.txt|grep LINUX (与1同),cat a.txt|grep -v LINUX (与2同)
sed、awk是两个非常强大的shell工具(不单纯是命令),他们各有超强的能力,甚至可以编程进行应用处理,关于他们的使用有专用的书介绍,内容非常多。sed多偏重于正则表达式方面的应用,实现查询替换等操作。awk的程序处理能力显示的更强。
② linux下sed使用
一、Sed简介 Sed:Stream Editor 流式编辑器 又称行编辑器,每次只编辑一行。Sed工作是在“模式空间”中进行的,并不操作源文件。对源文件无危害。 二、Sed使用格式 Sed命令的常用格式如下: (1)Sed [options] ‘script’ input_file… (2)Sed [options] –f script_file input_file… (3)Sed [options] ‘ADDR1,ADDR2command’ input_file… 例如:#sed ’1,2d’ fstab 就可以将fstab的前两行删除并显示出来,但是它不会改变源文件。 #Sed ‘1,2!d’ fstab 表示删除除第一行和第二行之外的所有行。 (4)Sed [options] ‘/PATTERN/command’ input_file…… &:s/l..e/&er/:表示引用前面匹配到的所有字符。 例如:sed ‘/[[:upper:]]/d’ binary.sh 表示删除所有的大写字母的行。 (5)Sed ‘/PATTERN1/,/PATTERN2/command’ input_file…… 说明:这表示从第一次被PATTERN1匹配到的行到第一次被PATTERN2匹配到的中间的所有行执行command命令。 三、Sed的常用选项: -n:只显示sed匹配到的行。其余行不显示。下文有范例。 -i :可以直接操作原文件。默认情况下sed不会改变原文件,但是-i选项可以修改原文件,此选项应慎用。 -r:可以使用标准正则表达式。默认情况下sed只支持基本正则表达式,但是加上-r选项后则支持扩展正则表达式 -e:多脚本共用。可以同时执行多个命令。例如: 代码如下: [root@localhost ~]# sed -e 's@@H1@g' -e 's@(l..e).@1r.@g' test He love His lover. She like Her liker. Dove love Her liker. 也可以这样用,中间用分号隔开: 代码如下: [root@localhost ~]# sed 's@@H1@g;s@(l..e).@1r.@g' test 四、使用示例 代码如下: #sed -e 命令行处理 -a 新增 > sed -e '$ a wiu' test.txt #在test.txt的结尾处添加wiu 代码如下: # 把-e换成-n > sed -n '$ a wiu' test.txt # 只显示被处理的一行 代码如下: # -c 替换多少行 为你制定的字符串,这里我的test.txt内容如图 > sed -e '2,5c xiaowei' test.txt #把2-5行替换成字符串xiaowei 代码如下: # 多命令执行 -e > sed -e '2,5c xiaowei' -e 's/cccc/wiu/' test.txt 代码如下: # -i 不输出 -s 替换 >sed -i 's/111111/wiu/g' test.txt 代码如下: # i 插入 自定义的字符串 在test.txt的第二行插入xiaowei > sed -e '2i xiaowei' test.txt 代码如下: # d 删除输入任何字符串 > sed -e '2d' test.txt #删除第二行
③ Linux里面sed和awk命令哪个重要
你好很高兴回答您的问题:
既然接触到了三剑客的sed和awk,对Linux应该是有些认知了吧.下面基于这个给您介绍下.
Linux的秘籍三剑客 grep,sed,awk是Linux命令,甚至是shell编程部分的核心技术.
掌握与数量可以加速处理文本速度.
grep擅长过滤与正则
sed擅长替换与增删改查
awk擅长统计计算与取行取列
快收下下面的宝典修炼吧.
④ 如何使用linux的shell 命令输出本地网页数据 例如sed,awk,grep 指令
图片中看到average throughput 放在了表格中,sed、awk等都是处理文本的,所以是对网页的源文件进行处理的,需要查看你源文件中 该变量的前后文,才能写出来
grep、sed一般是处理在同一行中的,内容,sed虽然也可以处理跨行的情况,不过比较难,所以建议使用awk进行处理。
⑤ linux里grep和egrep,fgrep的区别
1. grep简介
grep (global search regular expression_r(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
2. grep正则表达式元字符集(基本集)
^
锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$
锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
.
匹配一个非换行符的字符如:'gr.p'匹配gr后接一个任意字符,然后是p。
*
匹配零个或多个先前字符如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。
[]
匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^]
匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
..
标记匹配字符,如'love',love被标记为1。
\<
锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\>
锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\}
重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
x\{m,\}
重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
x\{m,n\}
重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
\w
匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W
\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b
单词锁定符,如: '\bgrep\b'只匹配grep。
3. 用于egrep和 grep -E的元字符扩展集
+
匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。
?
匹配零个或多个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。
a|b|c
匹配a或b或c。如:grep|sed匹配grep或sed
()
分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。
x{m},x{m,},x{m,n}
作用同x\{m\},x\{m,\},x\{m,n\}
linux基本命令grep egrep fgrep用法以及正则表达式
一、grep、egrep、fgrep命令
本文中主要介绍了linux系统下grep egrep fgrep命令和正则表达式的基本参数和使用格式、方法。(注释:文中fg代表例子,)
1.1、基本定义:
grep(global search regular RE ) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它只能使用基本的正则表达式来搜索文本,并把匹配的行打印出来。
grep是很常见也很常用的命令,它的主要功能是进行字符串数据的比较,然后符合用户需求的字符串打印出来,但是主意,grep在数据中查找一个字符串时,是以“整行”为单位进行数据筛选的。
egrep命令等同于grep -E,利用此命令可以使用扩展的正则表达式对文本进行搜索,并把符合用户需求的字符串打印出来。
fgrep命令等同于grep -F,它利用固定的字符串来对文本进行搜索,但不支持正则表达式的引用,所以此命令的执行速度也最快。
1.2、命令基本用法
grep [option] '搜索字符串' filename
grep常用选项:
-a :在二进制文件中,以文本文件的方式搜索数据
-c :计算找到'搜索字符串'的次数
-i :忽略大小写
-v :反向查找,即显示没有'搜索字符串'内容的那行
-o :只显示被模式匹配的字符串
-n :输出行号
--colour(color):颜色显示
-A:显示匹配到字符那行的后面n行
-B:显示匹配到字符那行的前面n行
-C:显示匹配到字符那行的前后n行
例子:
1. :
格式: grep [option] pattern filename 注意: pattern如果是表达式或者超过两个单词的, 需要用引号引用. 可以是单引号也可双引号, 区别是单引号无法引用变量而双引号可以.
grep '\<Tom\>' file 包含单词Tom的行
grep 'Tom savage' file 包含Tom savage的行
grep '^Tommy' file 包含以Tommy开头的行
grep '\.bak$' file 包含以.bak结束的行
grep '[Pp]yramid' file 包含pyramid 或Pyramid的单词的行
grep '[A-Z]' file 包含至少一个大写字母的行
grep '[0-9]' file 包含至少一个数字的行
grep '[A-Z]...[0-9]' file 包含五个字符,以大写开头, 和一个数字结尾的行.
grep -w '[tT]est' file 包含单词和test的行.
grep -s 'ken sun' file 找到包含ken sun的行, 但不打印行, 而是用来检查退出状态.
grep -v aaa file 打印不包含aaa的行.
grep -i cathy file 打印所有包含cathy的行, 而不考虑大小些.
grep -l 'dear cathy' * 打印包含dear cathy的文件的文件名清单.
grep -n tom file 打印匹配的行并追加行号.
grep "$LOGNAME" file 包含变量内容的行, 注意必须用双引号, 单引号则无法引用变量.
grep '$name' file 打印包含字符$name的行.
2 : egrep = grep -E 可以使用基本的正则表达外, 还可以用扩展表达式. 注意区别.
扩展表达式:
+ 匹配一个或者多个先前的字符, 至少一个先前字符.
? 匹配0个或者多个先前字符.
a|b|c 匹配a或b或c
() 字符组, 如: love(able|ers) 匹配loveable或lovers.
(..)(..)\1\2 模板匹配. \1代表前面第一个模板, \2代第二个括号里面的模板.
x{m,n} =x\{m,n\} x的字符数量在m到n个之间.
egrep '^+' file 以一个或者多个空格开头的行.
grep '^*' file 同上
egrep '(TOM|DAN) SAVAGE' file 包含 TOM SAVAGE 和DAN SAVAGE的行.
egrep '(ab)+' file 包含至少一个ab的行.
egrep 'x[0-9]?' file 包含x或者x后面跟着0个或者多个数字的行.
egrep 'fun\.$' * 所有文件里面以fun.结尾的行.
egrep '[A-Z]+' file 至少包含一个大写字母的行.
egrep '[0-9]' file 至少一个数字的行.
egrep '[A-Z]...[0-9]' file 有五个字符, 第一个式大写, 最后一个是数字的行.
egrep '[tT]est' file 包含单词test或Test的行.
egrep 'ken sun' file 包含ken sun的行.
egrep -v 'marry' file 不包含marry的行.
egrep -i 'sam' file 不考虑sam的大小写,含有sam的行.
egrep -l "dear ken" * 包含dear ken的所有文件的清单.
egrep -n tom file 包含tom的行, 每行前面追加行号.
egrep -s "$name" file 找到变量名$name的, 不打印而是显示退出状态. 0表示找到. 1表示表达式没找到符合要求的, 2表示文件没找到.
3 fgrep 很简单就是固化表达式的搜索.如:
fgrep "$name...[a-z]" file 就是在file里面找到和字符$name...[a-z]一样的行. 其中$和...等没有转义的意义.
http://hi..com/sei_zhouyu/item/c18e1a950d2e9eb5cc80e558
望采纳
⑥ linux中grep命令的使用
1、linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
2、格式
grep[options]
3、主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\:忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求。
。:所有的单个字符。
* :有字符,长度可以为0。
4、grep命令使用简单实例:
$ grep ‘test’d*
显示所有以d开头的文件中包含test的行。
$ grep ‘test’aa bb cc
显示在aa,bb,cc文件中匹配test的行。
$ grep‘[a-z]\{5\}’ aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
⑦ linux命令sed与awk是干什么用的,怎么用
sed 可理解为 stream editor 的简称,即文本流编辑器。以行为单位处理文本,可以做插入行、删除行、行内文本替换等操作。
awk 中存在 记录 和 字段 两个关键概念,通常默认一行就是一个记录,一个记录又可以被指定分隔符(默认是空格或tab)分割为多个字段。因此awk更为灵活与强大(并且有很多内置函数和变量可使用)。
关于具体用法,太多了。强大的东西总不是三言两语能够说尽的。网上有很多教程可以看,例如:
Sed - An Introction and Tutorial.doc
Awk - An Introction and Tutorial.doc
⑧ linux查找并输出特定行和它的前一行且在后面再输出一个空白行的命令
1.
您需求不太明确,输出特定行,后面加空行没有意义,比如说输出1-3行,后面就是空的了,为啥还要加空行?
2.
实现方式,grep
+
sed
grep
-n
取行数,sed
-n
'n-1,n-2'
#注意实际用的时候,n-1要算出来,或者脚本里面传参数
3.
例:
[user@master
tmp]$
ll
|
awk
'{
print
$3
}'
cloudera-scm
clouderauser
hadoop
hdfs
hive
mapred
root
yarn
zookeeper
clouderauser
[user@master
tmp]$
ll
|
awk
'{
print
$3
}'|
grep
-n
yarn
9:yarn
[user@master
tmp]$
ll
|
awk
'{
print
$3
}'|
sed
-n
'8,10p'
root
yarn
zookeeper
⑨ Linux中sed命令同awk命令有什么区别呢,具体该如何使用呢
sed 多用来编辑修改
awk 多用来打印
sed grep awk 俗称三剑客
使用上sed 和 awk扩展下来,内容可多了,甚至awk可以被当作一种脚本工具,单独出书,sed简单的用法增删改查都是可以直接网络到的,awk的打印也是。
例如 sed中
s 替换
sed 's/zhangsan/lisi/' yourfile 就是将zhangsan替换为lisi ,打印不执行
加上i后才真正执行 sed -i 's/zhangsan/lisi/' yourfile
d 删除
sed '/zhangsan/d' yourfile
sed -i '/zhangsan/d' yourfile
a 追加
sed -i '/zhangsan/alisi' yourfile
i 前插
sed -i '/zhangsan/ilisi' yourfile
p 打印
sed -n '/zhangsan/p' yourfile
因为它本身也会打印一般,所以加 -n 不默认打印
awk
-F 指定分隔符
awk -F ':' '/^root/{print $7}' /etc/passwd
打印以 root开头所在行,以“:”为分隔符,打印第七列
其效果就是打印了root的shell
纯手打,望采纳,谢谢,遇到具体问题仍可继续交流