Не могли бы вы попробовать следующее, этот код удалит символы Control M во время выполнения кода.
myarr=($(awk '{gsub(/\r/,"")} match($NF,/\/[^"]*/){\
val=substr($NF,RSTART,RLENGTH);\
num=split(val,array,"/");\
print val"/"$1"."array[num]".gz"}' Input_file))
for i in "${myarr[@]}"
do
echo $i
done
Если вы хотите удалить управляющие символы M из самого файла Input_file, попробуйте также выполнить следующее:
tr -d '\r' < Input_file > temp && mv temp Input_file
Когда мы печатаем массив с l oop, как показано выше, вывод будет следующим:
/path/to/fastq/DG13.fastq.gz
/path/to/fastq/DG14.fastq.gz
Объяснение кода awk
:
awk ' ##Starting awk program from here.
match($NF,/\/[^"]*/){ ##Using match function of awk program here, match everything till " in last field.
val=substr($NF,RSTART,RLENGTH) ##Creating variable val which is sub-string where starting point is RSTART till value of RLENGTH.
num=split(val,array,"/") ##Creating variable num whose value is number of elements plitted by split, splitting val into array with / is delimiter.
print val"/"$1"."array[num]".gz" ##Printing val / first field DOT array last element then .gz here.
}
' Input_file ##Mentioning Input_file name here.