Ubuntu 命令行列出字段长度#4不等于3的记录行号
是否可以在一个命令行中列出字段长度#4不等于3的记录行号 假设我有这个数据(制表符分隔符) #4字段中的数据为ATG、GGTA、GGT、TT、GTAA。 所以输出应该是Ubuntu 命令行列出字段长度#4不等于3的记录行号,ubuntu,command-line,Ubuntu,Command Line,是否可以在一个命令行中列出字段长度#4不等于3的记录行号 假设我有这个数据(制表符分隔符) #4字段中的数据为ATG、GGTA、GGT、TT、GTAA。 所以输出应该是 2 4 5 或(NULL可以被任何内容替换) 我更喜欢第一个输出。第二种方法是为了防止第一次输出无法完成,请尝试以下方法: $ awk -F'\t' '{print $4}' input.txt | cat -n | grep -Ev '[[:space:]][CTAG][CTAG][CTAG]$' | awk '{
2
4
5
或(NULL可以被任何内容替换)
我更喜欢第一个输出。第二种方法是为了防止第一次输出无法完成,请尝试以下方法:
$ awk -F'\t' '{print $4}' input.txt | cat -n |
grep -Ev '[[:space:]][CTAG][CTAG][CTAG]$' |
awk '{print $1}'
另一种解决方案,但在Perl中:
perl -F'\t' -lane 'length($F[3])==3 or print $.' input.txt
快速解释:
自动分割输入的每一行-a
(与@holygeek的awk解决方案类似)允许定义拆分模式-F
- 可以在数组
@F
是一个变量,包含输入的当前行号$。
$ awk -F'\t' '{print $4}' input.txt | cat -n |
grep -Ev '[[:space:]][CTAG][CTAG][CTAG]$' |
awk '{print $1}'
perl -F'\t' -lane 'length($F[3])==3 or print $.' input.txt