У меня есть команда, которая выводит мне список со следующим шаблоном
exp_70_T8_s1
exp_71_T8_s5
exp_72_T8_s10
exp_73_T10_s1
exp_74_T10_s5
exp_75_T10_s10
...
Как я могу получить числа после «_T» и «_s» соответственно, используя sed или что-то подобное в bash ? Результат должен выглядеть так:
8
8
8
10
10
10
и
1
5
10
1
5
10
для _T и _s соответственно
. Первая часть моей команды выглядит например:
for f in $(find . -name "someFile.txt" | sort); do echo $f; done | grep /someFolderName/
В принципе, я хотел бы добавить команду в значение, указанное выше.
Использование AWK:
command | awk -F_T\|_s '{print $2}'
command |
awk -F_T\|_s '
{
print $2
}
'
и:
command | awk -F_T\|_s '{print $3}'
command |
awk -F_T\|_s '
{
print $3
}
'
Где command - команда, которая выводит файл.
-F_T\|_s: устанавливает _T и _s в качестве разделителей входных полей; {print $2}: печатает второе поле. {print $N}: печатает третье поле.% cat file
exp_70_T8_s1
exp_71_T8_s5
exp_72_T8_s10
exp_73_T10_s1
exp_74_T10_s5
exp_75_T10_s10
% cat file | awk -F_T\|_s '{print $2}'
8
8
8
10
10
10
% cat file | awk -F_T\|_s '{print $3}'
1
5
10
1
5
10