繁体   English   中英

基于特定行值的AWK行数

[英]AWK number of rows based on a certain row value

我想使用基于“代码”编号的UNIX Bash命令仅保留.txt文件的某些行:

Name  
Ignore  
2    
1357 1817  
1366 1857  
Name 
Ignore  
3   
293 142  
302 181 
303 181
Name  
Ignore  
7  
1596 1787  
1595 1787  
1594 1787  
1565 1803  
1565 1804  
1565 1805  
1565 1806
Other-name
No-interest
No-interest
No-interest

因此,只有带有“名称”的行才有意义。 “其他名称”无关紧要。 “名称”后面的第二行是“名称”感兴趣的行数的代码。 但是我不想保留所有内容,仅保留代码行之后的第一行和最后一行。 因此,如果代码为i 3,我要在代码行之后的第1行和第3行。 如果代码为i 7,则我希望在代码行之后的第1行和第7行。 在前。 输出上方应为:

1357 1817  
1366 1857    
293 142  
303 181
1596 1787    
1565 1806

非常感谢你!

你可以试试

awk -f ext.awk input.txt

其中input.txt是您的输入文件, ext.awk

/^Name/ {
    getline
    getline
    n=$1
    for (i=1; i<=n; i++) {
        getline
        if (i==1 || i==n) print
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM