如何使用awk提取匹配行下几行,行数不定但要大于一行

如何使用awk提取匹配行下几行,或者sed也行
比如一个文件
a
1 2 3 4
b
a b c d
5 6 7 8
9 10 11 12
c
e f g h
5 6 7 8
d
i j k l
把只有一个字段下面的多于一行的内容提取出来
即输出是
a b c d
5 6 7 8
9 10 11 12
e f g h
5 6 7 8
感谢解答!

1个回答

#!/bin/bash

awk '/^[a-z]$/{print NR}' file.txt > line.txt
NUM=`cat line.txt | wc -l`
a=$[NUM-1]
for i in `seq $a`
do
    NR=`sed -n "${i}p" line.txt`
    NR2=`sed -n "$[i+1]p" line.txt`
    N=$[NR2-NR]
    if [[ $N > 2 ]]
    then
        sed -n "$[NR+1],$[NR2-1]p" file.txt
    fi
done

提供一种方法
先把a b c d 这些行的行号打印出来,放在line.txt中,你也可以不用line.txt,弄个变量代替
然后用行号去进行判断,比如,如果c的行号减去b的行号(7-3),大于2,则他们中间内容大于1行,就打印他们中间的内容,也就是打印4-6行

lvhbbb
lvhbbb 感谢感谢!
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

awk怎么提取多行?上下行都要取,取的行数不定啊!

一行文字 ## 2017-01-01 ## 这行开头是时间格式的 多行文字 ##这是多行,行数不定啊 http开头 ##这行开头是http的 我想这样取,取时间上面的一行,取时间下面的多行,然后把它变成这样的一行?分割符号用tab好了, 一行文字 2017-01-01 多行文字 http开头 似乎awk擅长处理这个,可小弟我太菜,教我下不?谢谢!

awk怎么提取匹配数组元素的行

两个文件,前一个文件每行的$1为数组的下标 即a[i]=$1;i++ 读取下一个文件时,如何提取$1 ~ /a[i]/的行,匹配的时候总是匹配字符串a[i],并不是匹配a[i]的值$1怎么办

awk如何获取除最后一行的所有行?

awk如何获取除最后一行的所有行?awk如何获取除最后一行的所有行?(为什么问题描述一定要大于30,总有写问题比较简短的)

awk匹配只含由某个字符的那行不包括包含

比如文本a.txt有两行如下: a bnabn 现在我要匹配只含有“a”的那一行,如何写。 我用awk '/\s*a\s*/ {print NR}',还是把第二行匹配了

awk怎么将自定义匹配的结果传给变量?

比如 ```shell str="abc d:aaa, timestamp: dwadwa d:bbb, timestamp: rererere d:ccc, timestamp: " ``` 怎么使用awk提取最终内容为一行: aaa, bbb, ccc 我知道在正则中用 ()可以将想要保留的内容保留,然后在$1 表示这个内容,但是在awk中似乎无效。 我的尝试: awk '{sub(/.+d:(\w+).+/n/,$1); print }' 肯定是报错了,或者有什么别的办法可以实现这个功能也行,但是最好是用awk实现,多谢了~

awk 怎么输出 某一行某一列的内容 用一个管道

199 222 199 333 199 222 199 333 比如说这两行一样,怎么输入第二行第二列的内容

linux如何利用AWK或者sed提取文件指定内容

怎么才能将这个文件里的URL地址和email提取出来,并保存到一个文件里 Contacting address: Middle-section of Nan'er Huan Road, Xi’an, Shaanxi, P.R. China Chang’an University Zip code: 710064 Tel: 0086-29-82338114 Fax: 0086-29-82338114 E-mail: admin@chd.edu.cn Web site: http://www.chd.edu.cn Contacting address: Xianning West Road, Xi’an, Shaanxi, P.R. China Xi'an Jiaotong University Zip code: 710049 Tel: 0086-29-82668888 Fax: 0086-29-82668888 E-mail: admin@xjtu.edu.cn Web site: http://www.xjtu.edu.cn Contacting address: No.2 South Taibai Road, Xi’an, Shaanxi, P.R. China Xidian University Zip code: 710071 Tel: 0086-29-88202212 Fax: 0086-29-88202212 E-mail: admin@xidian.edu.cn Web site: http://www.xidian.edu.cn 谢谢各位大佬啦

使用 awk 打印除第一个字段以外的所有内容

<div class="post-text" itemprop="text"> <p>I have a file that looks like this:</p> <pre><code>AE United Arab Emirates AG Antigua &amp; Barbuda AN Netherlands Antilles AS American Samoa BA Bosnia and Herzegovina BF Burkina Faso BN Brunei Darussalam </code></pre> <p>And I 'd like to invert the order, printing first everything except $1 and then $1:</p> <pre><code>United Arab Emirates AE </code></pre> <p>How can I do the "everything except field 1" trick?</p> </div> <p>转载于:https://stackoverflow.com/questions/4198138/printing-everything-except-the-first-field-with-awk</p>

文件换行:wc vi 与 awk 行数不一致

对同一文件: 用wc统计文件行数是两行; vi打开文件实际占了三行,后两行均是均只有^M,但文件统计显示也是只有两行; 若认为只是windows文件到linux下的显示问题,那为什么我用awk对文件操作,结果还是三行? 诚心求助。。

awk对有部分重复的行之间进行加减操作

有如图文本: 21 20 well 31 12 key 32 41 ada 92 13 aaf 34 54 ada 对第三列的字符进行查重,如果有相同,则将重复所在的两行的前两列分别相加 并删除重复的一行 例如将第3行与第五行相加最后变成 21 20 well 31 12 key 66 95 ada 92 13 aaf

Linux,用awk命令分割一行字符串

<dnhcgmd/hsxhkfnf/dgfnvih%28sjgnjshd%2xhhf8mf> 比如我想提取第二个/和%28中间夹的一串字符 可以用什么命令或者函数完成

关于awk对文件进行多次处理的问题

我需要对一个文件进行多次处理,第一次要扫描整个文件提取关键字,第二次再次扫描整个文件,根据关键字来替换相应内容。但是,awk脚本不是把文件扫描一次就结束了吗?这个该怎么处理?

用逗号分隔(perl / sed / awk)[ duplicate ]将多行转换为一行

<div class="post-text" itemprop="text"> <div class="question-status question-originals-of-duplicate"> <p>This question already has an answer here:</p> <ul> <li> <a href="/questions/8522851/concise-and-portable-join-on-the-unix-command-line" dir="ltr">Concise and portable “join” on the Unix command-line</a> <span class="question-originals-answer-count"> 9 answers </span> </li> </ul> </div> <p>I have the following data in multiple lines:</p> <pre><code>foo bar qux zuu sdf sdfasdf </code></pre> <p>What I want to do is to convert them with one line and comma separated:</p> <pre><code>foo,bar,qux,zuu,sdf,sdfasdf </code></pre> <p>What's the best unix one-liner to do that?</p> </div> <p>转载于:https://stackoverflow.com/questions/15758814/turning-multiple-lines-into-one-line-with-comma-separated-perl-sed-awk</p>

awk system函数调用awk变量

awk 'BEGIN{ip = "192.168.1.1"}{system("iptables -A INPUT -s IP -j DROP")}' 我想要在IP哪里替换成前面的变量ip,请问大神们该怎么使用。

awk请教大神一行代码?谢谢!

在网上看到 避免这样写的解决方法awk '{print $2"\t"$2"\t"$3"\t"$4"\t"$。。。。。}' 有一个 awk -vOFS='\t' '{NF=12}1',跑完看起来确实实现了对文本前几列的截取,但是这个后边的1是什么意思?虽然-vOFS也不知道是什么。。。

linux awk 变量赋值和比较

请问前辈一下三句有什么不同 1. awk -F: 'BEGIN{sx=3199; print sx} {if($3==3199) print $1} END{print "End"}' passwd 2. sx=3199 awk -F: 'BEGIN{print $sx} {if($3==$sx) print $1} END{print "End"}' passwd 3. awk -F: 'BEGIN{sx=3199; print sx} {if($3==sx) print $1} END{print "End"}' passwd 1 输出 3199 nscc3199 End 2 输出 (空一行) (空一行) End 3 输出 3199 (空一行) End 为什么呀?大神,各位大神指导一下,解释一下原因。因为我以为这3句是同样的结果才对!!!

awk比对两文件相同部分

有这样两个文件 ``` % cat file1 1 -3 -5 8 7 6 9 -10 12 2 -4 11 -13 14 20 -21 22 19 % cat file2 a 1 13 b 2 15 c 3 13 d 4 16 e 5 20 f 6 16 g 7 14 h 8 14 i 9 16 j 10 26 k 11 34 l 12 25 m 13 6 n 14 5 o 15 1 p 16 12 ``` file2文件第二列为id,第三列为该id对应长度,file1文件中每一行由file2文件中的id构成,计算file1前三行的长度。其中file1中带负号的id要变成正数,再去file1中找相同的id。这两个文件只是数据中的一部分,请问大神们,用awk如何完成呢?这个各种循环实在是不太会弄了。

正则表达式匹配不成功,求解释原因及正确姿势

日志部分内容如下: 2016-02-21 09:59:58.522 INFO 0a030860-2003-24266999-236 c3 /result/payNotifyResult.htm 17 0 2016-02-21 09:59:59.092 INFO 0a030860-2003-24266999-237 c0 /cashier/getCode.htm 1 71 2016-02-21 09:59:59.303 INFO 0a030860-2003-24266999-203 c6 /cashier/qwaitResult.htm 9522 154 2016-02-21 09:59:59.450 INFO 0a030860-2003-24266999-238 c9 /cashier/home.htm 49 0 2016-02-21 09:59:59.656 INFO 0a030860-2003-24266999-240 c1 /cashier/statistic.htm 8 146 我想匹配 09:30:00.000-10:00:00.000 (左闭右开) 时间段的行 我的写法: awk '$2 ~ /^09:[3-5]{1}.*/ {print $0}' request.log.2016-02-21.log 但是没有结果,求解释原因及正确姿势

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

Python可以这样学(第一季:Python内功修炼)

Python可以这样学(第一季:Python内功修炼)

相关热词 c# dbml文件 修改 c#遍历tree c# 能够控制单片机 c#对象写入数据库 c# 添加activex c#2005 json c# 数据库在云端 c# 字符串移位加密 c#禁用滚轮 c#实体类list去重复
立即提问