gpt4 book ai didi

awk - 从多个文件中打印请求的行

转载 作者:行者123 更新时间:2023-12-02 05:41:10 26 4
gpt4 key购买 nike

我想从多个文件中获取特定行。

我试过这样做:

sed -n "5p;10p" file1.txt file2.txt

但它只打印第一个文件中的行,有人有解决方案吗?谢谢

最佳答案

awk 助您一臂之力!

$ awk 'FNR==5 || FNR==10' file{1,2}.txt

将从两个文件中打印第 5 行和第 10 行。

或者,每 5 行,很容易 (5,10,15,...)

$ awk '!(FNR%5)' file{1,2}.txt

或者,质数线

$ awk '{for(i=2;i<=sqrt(NR);i++) if(!(NR%i)) next} NR>1' file{1,2}.txt

作为上一个脚本的变体,这是一个更优化的版本

$ awk 'NR>1{for(p in ps) if(!(NR%p)) next; ps[NR]; print}'

这是另一个,更冗长但优化

$ awk 'BEGIN {f=1} 
NR>1 {if(NR==(f+1)^2) f++;
for(i=0; i<c && ps[i]<=f; i++) if(!(NR%ps[i])) next;
ps[c++]=NR; print}'

您也可以消除平方计算。

 $ awk 'BEGIN {f=1; ns=4} 
NR>1 {if(NR==ns) ns+=2*(++f)+1;
for(i=0; i<c && ps[i]<=f; i++) if(!(NR%ps[i])) next;
ps[c++]=NR; print}'

关于awk - 从多个文件中打印请求的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34427653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com