bash – unix命令从单词的第一个和最后一个出现之间获取行并写入
发布时间:2020-12-15 22:08:45 所属栏目:安全 来源:网络整理
导读:我想要一个unix命令来查找第一个和第一个之间的行.最后一个词出现 例如: 让我们想象我们有1000行.第十行包含单词“stackoverflow”,第三十五行也包含单词“stackoverflow”. 我想打印10到35之间的行并将其写入新文件. 解决方法 你可以分两步完成.基本思路是
我想要一个unix命令来查找第一个和第一个之间的行.最后一个词出现
例如: 让我们想象我们有1000行.第十行包含单词“stackoverflow”,第三十五行也包含单词“stackoverflow”. 我想打印10到35之间的行并将其写入新文件. 解决方法
你可以分两步完成.基本思路是:
1)获取第一个和最后一个匹配的行号. 2)打印这些范围之间的行范围. $read first last <<< $(grep -n stackoverflow your_file | awk -F: 'NR==1 {printf "%d ",$1}; END{print $1}') $awk -v f=$first -v l=$last 'NR>=f && NR<=l' your_file 说明 > read first last读取两个值并将它们存储在$first和$last中. 和 > awk -v f = $first -v l = $last’NR> = f&& NR< = l'your_file打印从$first行号到$last行号的所有行. $cat a here we have some text stackoverflow and other things bla bla bla bla stackoverflow and whatever else stackoverflow to make more fun blablabla $read first last <<< $(grep -n stackoverflow a | awk -F: 'NR==1 {printf "%d ",$1}; END{print $1}') $awk -v f=$first -v l=$last 'NR>=f && NR<=l' a stackoverflow and other things bla bla bla bla stackoverflow and whatever else stackoverflow 按步骤: $grep -n stackoverflow a 3:stackoverflow 9:stackoverflow 11:stackoverflow $grep -n stackoverflow a | awk -F: 'NR==1 {printf "%d ",$1}; END{print $1}' 3 11 $read first last <<< $(grep -n stackoverflow a | awk -F: 'NR==1 {printf "%d ",$1}; END{print $1}') $echo "first=$first,last=$last" first=3,last=11 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |