linux shell命令怎么查找文件中指定字符串,并把这个字符串所在行和下面一行的内容写到另外一个文件中?
aaa:
1234
bbb:
5678
aaabbb:
1988
要把aaa所在行及下一行内容写到2.txt文件中。
处理结果2.txt:
aaa:
1234
aaabbb:
1988
没分了,下次有分一定给您,谢谢! 展开
有两种写入方式:
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)。
grep -i "aaa" -A 1 1.txt | grep -v -e "--" >2.txt
谢谢两位回答,两种方法都试了都可以,多谢了。
其中第二种方法是从字符串开始截取第一行内容的