$ awk -v OFS='\t' 'NF == 5 { sub("[0-9]*$", "", $2) } NF == 6 { $0 = $1 OFS $2 OFS $4 OFS $5 OFS $6 } { print }' file
18DMA H 0.886 5.687 5.320
18DMA H 1.019 5.764 5.247
18DMA Np 0.947 5.584 5.151
18DMA H 1.033 5.541 5.113
18DMA Cn 0.880 5.674 5.050
18DMA H 0.831 5.616 4.971
18DMA H 0.814 5.751 5.091
18DMA H 0.957 5.735 5.003
18DMA Cn 0.837 5.486 5.185
Эта короткая awk
программа будет выполнять различные действия со строкой ввода в зависимости от того, содержит ли она 5 или 6 полей, разделенных пробелами -.
Если он содержит пять полей, он удаляет все цифры с конца второго поля и оставляет все остальное как есть. Если он содержит шесть полей, он перезаписывает строку, но опускает третье поле.
Вывод будет состоять из табуляции -с разделителями (или с разделителями, установленными для OFS
в командной строке ).
У меня есть микшер PulseAudio GUI в моей системе Manjoro -, который позволяет выбирать выход звукового устройства для каждого приложения.