Я пытался научить себя awk выполнению sh следующего, но не добился большого успеха.
У меня есть каталог с несколькими текстовыми файлами:
JV-01_S01_L007_R2_002_RepetitiveText_ToRemove.txt
JV-26_S48_L_RepetitiveText_ToRemove.txt
...
Структура каждого текстового файла следующая. Числа могут измениться , но сопровождающий текст всегда останется неизменным.
JV-01_S01_L007_R2_002_RepetitiveText_ToRemove.txt
4620178 reads; of these:
4620178 (100.00%) were unpaired; of these:
1226814 (26.55%) aligned 0 times
3040861 (65.82%) aligned exactly 1 time
352503 (7.63%) aligned >1 times
73.45% overall alignment rate
JV-26_S48_TeTeRet .txt
1601831 reads; of these:
1601831 (100.00%) were unpaired; of these:
58800 (3.67%) aligned 0 times
1344724 (83.95%) aligned exactly 1 time
198307 (12.38%) aligned >1 times
96.33% overall alignment rate
Для каждого файла в этом каталоге я хочу скомпилировать csv:
Sample Total_Reads Uniquely_Mapped_Reads Multi_Mapped_Reads Unmapped_Reads
JV-01_S01_L007_R2_002 4620178 3040861 352503 1226814
JV-26_S48_L 1601831 1344724 198307 58800
...
Есть ли способ сделать это с помощью сингла для l oop с awk? Я пытался использовать функцию соответствия. Например, если бы я мог указать поиск совпадений в указанной строке c, а затем искать слева направо подстроку, состоящую из любого числа цифр, до тех пор, пока не будет найден пробел. Это захватило бы подстроку, представляющую интерес для этой строки.
Что-то вроде:
for file in *.txt
do
awk 'FNR == 1 {print FILENAME, match(NR==1, \d), match(NR==4, \d), match(NR==5, \d), match(NR==3, \d) } ' $file >> Names.csv