gpt4 book ai didi

bash - 如何处理 bash 中的每一行

转载 作者:行者123 更新时间:2023-11-29 08:48:21 25 4
gpt4 key购买 nike

我想打印奇数行 (1,3,5,7..) 而不做任何更改,但偶数行 (2,4,6,8) 处理以 grep 开头的管道。我想将所有内容写入新文件(没有任何更改的奇数行和偶数行的新值)。

我知道如何在 awk 中打印每隔一行:

awk ' NR % 2 == 1 { print; } NR % 2 ==0 {print; }' file.fasta

但是,对于偶数行,我不想使用 {print; } 但我想改用我的 grep 管道。

建议将不胜感激。非常感谢。

最佳答案

如果您打算做一个简单的 grep,您可以取消额外的步骤并在 awk 本身中进行过滤,例如:

awk 'NR % 2 {print} !(NR % 2) && /pattern/ {print}' file.fasta

但是,如果您打算做更多,那么 chepner already pointed out ,您确实可以从 awk 内部进行管道传输。例如:

awk 'NR % 2 {print} !(NR % 2) {print | "grep pattern | rev" }' file.fasta

这会打开一个管道到命令 "grep pattern | rev"(注意周围的引号)并将打印输出重定向到它。请注意,这种情况下的输出可能与您预期的不同;您最终将首先输出所有奇数行,然后输出管道命令(消耗偶数行)。


(回应您的评论)要计算每行中的字符数,请尝试:

awk 'NR % 2 {print} !(NR % 2) {print length($0)}' file.fasta

关于bash - 如何处理 bash 中的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11560544/

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