Я опубликую, что решило проблему для меня, что является лучшим ответом на этот вопрос здесь:
https://askubuntu.com/questions/398030/change-default-sound-device
Используя это и помощь, предоставленную дирктом , я предпринял следующие шаги::
pacmd list-cards
-это дало моему X -Fi индекс 2.
Настройка профиля была фактически идентична настройке в ответе по ссылке выше, а именно 2 output:analog-stereo
. Затем я ввел следующееpacmd set-card-profile 2 output:analog-stereo
Затем я добавил
set-card-profile 2 output:analog-stereo
set-default-sink 2
до конца/etc/pulse/default.pa
И при перезагрузке по-прежнему был выбран X -Fi, не нужно было вносить никаких изменений в Звук для повторного выбора карты.
Если вы не возражаете, используя числа вместо букв, вы можете сделать это очень легко в awk(file
имеет результат запуска sed -i 's/ */\t/g'
на вашем примере данных, чтобы заменить все последовательные пробелы табуляцией, поскольку вы сказали, что ваш данные разделены табуляцией):
$ awk -F"\t" -vOFS="\t" '{if($1==1){num++}{print $0,"Replicate_"num}}' file
1 x x Replicate_1
2 x x Replicate_1
3 x x Replicate_1
4 x x Replicate_1
1 x x Replicate_2
2 x x Replicate_2
3 x x Replicate_2
1 x x Replicate_3
2 x x Replicate_3
3 x x Replicate_3
Если вам нужны буквы, это немного сложнее, но не так уж плохо:
$ awk '{
if(NR==FNR){
a[++n]=$1
}
else{
if($1==1){
num++
}
print $0,"Replicate_"a[num]
}
}' <(printf '%s\n' {A..Z}) file
1 x x Replicate_A
2 x x Replicate_A
3 x x Replicate_A
4 x x Replicate_A
1 x x Replicate_B
2 x x Replicate_B
3 x x Replicate_B
1 x x Replicate_C
2 x x Replicate_C
3 x x Replicate_C
Использование AWK с отдельным файлом со списком имен для добавления:
#!/usr/bin/awk -f
BEGIN { FS = "\t"; OFS = FS; idx = 0 }
FNR == NR { names[NR] = $0 }
FNR < NR && $1 == 1 { idx++ }
FNR < NR { $(NF + 1) = names[idx]; print }
Это настраивает AWK на использование табуляции в качестве разделителей полей для ввода и вывода. Предполагается, что первый файл содержит добавляемые имена; это читается в массив names
. Когда мы переходим к файлам после первого, мы добавляем текущее имя в конец строки после проверки, равно ли первое поле 1, и увеличиваем индекс массива, если это так.
Без отдельного списка имен:
#!/usr/bin/awk -f
BEGIN { FS = "\t"; OFS = FS; idx = 0 }
$1 == 1 { idx++ }
{ $(NF + 1) = sprintf("Replicate_%c", 64 + idx); print }
В обоих случаях обработка ошибок отсутствует. В первом варианте, когда у вас закончатся имена, вместо них будет использоваться пустая строка. Во втором вы изучите набор символов после Z...