- 论坛徽章:
- 0
|
比如我有一个文件a:
aaaaabbbbbo
cccccddddd
eeeeefffffppp
我只想输出每行中的前10个字符,
我在文献上看到的句法是:
LEN=10
awk -vLEN=$LEN '{print substr($1,1,LEN)} else {print $0}' a
我执行了一下,发现有句法错误。
文献的原文是:
> for sample in chip_dmel input_dmel chip_dyak input_dyak; do
> echo -en $sample“\t”
> # Read length
> gunzip -c ${sample}.fastq.gz | awk '((NR-2)%4==0){count[length($1)]++}END{for(len in count){print len}}'
> # Truncate longer reads to 36 bp (if necessary)
> LEN=36
> gunzip -c ${sample}.fastq.gz | awk -vLEN=$LEN '((NR-2)%2==0){print substr($1,1,LEN)}else{print $0}' | gzip > ${sample}_36 bp.fastq.gz
> done
它是为了把文件中是2的倍数的行进行处理,超过36个字符的只取前36个字符。
我查了查网上对awk的介绍,还是解决不了我的疑惑。
请教,此awk语句要如何改才能实现文献中描述的目的呢? |
|