2010-10-08 59 views
2

我想从包含给定单词的最后一次出现的行的文件中获取行。Unix Sed从给定单词的最后一次出现中获取行

例:

诚然,已经在一些情节
变化。在原来,
凯恩试图购买自己的高政治
办公室。在新版本中,他只是把政客放在他的工资单上。

如果我给你 “在” 然后我需要

办公室为他自己。在新版本中,他只是把政客放在他的工资单上。

+0

你应该用正确的换行符格式化例如,使用“代码”格式化,否则不可能理解你想要的。 – enzotib 2010-10-08 06:57:05

回答

1

尝试:

sed -n '/yourWord/{$p}' yourFile.txt 
+0

其实我需要的是模式匹配的行下的整个文本@ last – 2010-10-08 09:06:57

0
$ word="In" 
$ awk -vw="$word" '{s=s$0}END{ m=split(s,str,w); print w str[m]}' file 
In the new version, he just puts politicians on his payroll. 

我不明白为什么有:

grep 'yourWord' yourFile.txt | tail -n1 

或用SED “办公室为他自己。”虽然。

+0

它只是一个格式错误。抱歉。感谢您的回应... – 2010-10-08 09:04:55

0

这应该工作:

作为一个班轮:

patt=In 
sed -nr "/$patt/!b;:a;\$!N;/\n.*$patt/{h;s/\n[^\n]*\$//;g;s/^.*\n//};\$!ba;p" inputfile 

如果您sed需要-e

patt=In 
sed -nr -e "/$patt/!b" -e ":a" -e "\$!N" -e "/\n.*$patt/{h" -e "s/\n[^\n]*\$//" -e "g" -e "s/^.*\n//}" -e "\$!ba" -e "p" inputfile 

在不同的行:

patt=In 
sed -nr " 
    /$patt/!b 
    :a 
    \$!N 
    /\n.*$patt/{ 
    h 
    s/\n[^\n]*\$// 
    g 
    s/^.*\n// 
    } 
    \$!ba 
    p' inputfile 
0

我C一个打印四号线和行末只有

我的命令是

的sed -N“4,$ P”文件

相关问题