shell脚本匹配特定字符串的下一行内容
‘壹’ shell 正则匹配一条字符串并且获取该字符串中所有匹配到的字符
1、“^”是匹配以什么字符或字符串开头的,匹配正确返回1,否则返回0。
注意事项:
shell也可以运源伏行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令春裂薯,并且执行它们。当它读到文件的结尾,shell也就终止了。
‘贰’ 利用shell脚本如何提取一个文件中某一特定行和下面若干行的内容
一条语句搞定,假定你要找到最后一个ABC以及后面的10行,
当然这条语句能够执行的基础是,1.log里确实有ABC这个字符串,否则下面一条语句就会出现失败,更好的方法是在脚本中分成两条语句,一条语句判断是否有ABC以及行号,第二条语句是用sed来打印。你可以自己根据下桥丛面的命令来搞定,我敏大樱就不多说了。
sed
-n
"$(grep
-n
ABC
1.log
|
tail
-1
|
cut
-d
:
-f
1),+10p"仿薯
ABC.log
‘叁’ shell sed能不能匹配指定字符串之后的第三行,新增一行
抛砖引玉
预览:
sed-n-e'/aaa/{n;n;n;s|$| 新添加的行|p}'3hang_addline.txt
应用:
sed-i-e'/aaa/{n;n;n;s|$| 新添加的行|}'3hang_addline.txt
解释:
n;n;n;就是从匹配的aaa往下走三行,到位后,将行尾添加换行符——新增一行, 后面就是新行的内容。
你的提问只需要两个n,即往下走两行,再添加新行,就行了。我审题不歼绝严。
可能你要问,如果我要在匹配到aaa后的1000行添加新行,难道要打1000次“n;”吗?
我的回答是,如果数字很大,我到宁愿用你没衡提问中不想用的那个方法。
预览:
num=`sed-n-e'/aaa/='3hang_addline.txt`;sed-n$((num+3))'s|$| 你要添加的行枯改做|p'3hang_addline.txt
应用:
num=`sed-n-e'/aaa/='3hang_addline.txt`;sed-i$((num+3))'s|$| 你要添加的行|'3hang_addline.txt
‘肆’ 请教shell脚本里如何进行字符串匹配
比如说传入的参数是str
tmpstr=`echo &str|awk '{print substr($0,length($0)-1),2}'信宽 #取滑悔亮最后两位
if [ "$tmpstr" == "aa" ];then
......
elif [ "$tmpstr" == "前御bb" ]; then
......
fi
‘伍’ shell脚本怎样提取匹配行及向下几行的内容,行数不定
#!/bin/sed-n
:next
/^student:/{
p
:gettoend
n
p
/^$/bnext
b前姿闷gettoend
}
保存到文件code.sed中 使用 sed -f code.sed dat.txt 就可以输出文件
但文件格慧弯式册春必须严格,每个 student以空白行作为结束,结束行内没有任何字符。建议增加一个关键字end 用来作为结束标记。
‘陆’ linux shell怎么查找文件中指定字符串,并把该字符串和下一行的内容写到另一个文件中
有两种写入方式:
1、grep
-i
"aaa"
-A
1
1.txt
|
grep
-v
-e
"--"
>2.txt
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。
2、awk
'/aaa/{getline
var;print
$1"\n"
var}'
1.txt
>2.txt
awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。
linuxshell中引号的使用方法:
shell使用引号(单引号/双引号)和反斜线("\")用于向shell解释器屏蔽一些特殊字符,反引号(")对shell则有特殊意义。
如:abc="how
are
you"
(bash/pdksh)
set
abc
=
"how
are
you"
(tcsh)
这个命令行把三个单词组成的字符串how
are
you作为一个整体赋值给变量abc.
abc1='@LOGNAME,how
are
you!'
(bash/pdksh)
set
abc1='$LOGNAME,how
are
you!'
(tcsh)
abc2="$LOGNAME,how
are
you!"
(bash/pdksh)
set
abc2="$LOGNAME,how
are
you!"
(tcsh)。
‘柒’ 请问怎么在shell脚本中,替换文件多行里面的指定字符串
sed-i'/aaa/{:a;n;s/123/xyz/g;/eee/!ba}'yourfile
先匹配aaa,匹配到后执行大括号里的语句。
n 读取下一行
s/123/xyz/g 将123替换为xyz,全局替换,同一行中出现几次替换几次
:a 设定跳转标签a
/eee/!ba 若当前行匹配不上eee,则跳转到标签a处继续执行,构成一个循环。若匹配到eee,则退出循环,sed重新对读入的每行匹配aaa。
由于sed没有加-n静默选项,所以默认对每行数据处理后都打印。
‘捌’ linux shell命令怎么查找文件中指定字符串,并把这个字符串所在行和下面一行的内容写到另外一个文件中
这个问题太有想象力了,命令如下。grep -i "aaa" -A 1 1.txt | grep -v -e "--" >2.txtlinux shell命令怎么查找文件中指定字符串,并把这个字符串所在行和下面一行的内容写到另外一个文件中?
‘玖’ Shell实现以下功能: 通过关键词匹配到文件某一行,并在这一行末尾追加内容。
假设文件名是1.txt
cat1.txt|grepbbbb|睁御head-1|awk'print$1,$2,dddd'
sorry看错了你的悉悄岩需求,上面的只是把你需要的那一行打印出运凳来了,应该用sed来插入,也很简单
sed-i's/bbbb1234/bbbb1234dddd/'1.txt
‘拾’ 利用shell脚本如何提取一个文件中某一特定行和下面若干行的内容
1、在linux目录/root下建立一个txt文件,内容如下,使用|竖线分割,作为我们的实验数据样本。