Regex 匹配两行中的字符数

Regex 匹配两行中的字符数,regex,awk,sed,Regex,Awk,Sed,我有一个文件,我正试图准备一些下游分析,但我需要两行中的字符数相同。该文件的格式如下所示,其中第2行(cttataatgccgctctag)和第4行(bbbeeeeggggiiighiiigicccb)需要包含相同数量的字符 @HWI-ST:8:1101:3346:2198#GTCCGC/1 CTTATAATGCCGCTCCCTAAG +HWI-ST:8:1101:3346:2198#GTCCGC/1 bbbeeeeegggggiiiiiiiiigghiiiiiiiiiiiiiiiiiigecc

我有一个文件,我正试图准备一些下游分析,但我需要两行中的字符数相同。该文件的格式如下所示,其中第2行(
cttataatgccgctctag
)和第4行(
bbbeeeeggggiiighiiigicccb
)需要包含相同数量的字符

@HWI-ST:8:1101:3346:2198#GTCCGC/1
CTTATAATGCCGCTCCCTAAG
+HWI-ST:8:1101:3346:2198#GTCCGC/1
bbbeeeeegggggiiiiiiiiigghiiiiiiiiiiiiiiiiiigeccccb
@HWI-ST:8:1101:10491:2240#GTCCGC/1
GAGTAGGGAGTATACATCAG
+HWI-ST:8:1101:10491:2240#GTCCGC/1
abbceeeeggggfiiiiiigg`gfhfhhifhifdgg^ggdf_`_Y[aa_R
@HWI-ST:8:1101:19449:2134#GTCCGC/1
AAGAAGAGATCTGTGGACCA
到目前为止,我已经从每组四行中抽出第二行,并生成了一个包含每行长度记录的文件,使用:

grep -v '[^A-Z]' file.fastq |awk '{ print length($0); }' > newfile
现在,我正在寻找一种方法来指向这个记录,以指示sed命令从行尾删除多少个字符。类似于:

sed -r 's/.{n}$//' file

用一些正则表达式替换n以引用文本文件。我想知道我是否把事情复杂化了,但我需要线条精确匹配,所以我还没有想到另一种方法。任何帮助都会很棒,谢谢

这可能就是您想要的:

awk '
  # If 2nd line of 4-line group, save length as len.
  NR % 4 == 2 { len = length($0) }

  # If 4th line of 4-line group, trim the line to len.
  NR % 4 == 0 { $0 = substr($0, 1, len)}

  # print every line
  { print }
' file

这假设文件由4行组组成,其中每个组的第2行和第4行是您感兴趣的。它还假设每个组的第2行不超过其相应的第4行。

是否始终是第2行和第4行?只有这两个?我花了一两秒钟才弄明白背后的逻辑,但是的,这是完美的!非常感谢你的帮助!