Учитывая код awk из этого принятого ответа :
awk '
BEGIN{
num=split("a the to at in on with and but or",array," ")
for(i=1;i<=num;i++){
smallLetters[array[i]]
}
}
/TITLE/{
for(i=2;i<=NF;i++){
if(tolower($i) in smallLetters){
$i=tolower(substr($i,1,1)) substr($i,2)
}
else{
if($i~/^\"/){
$i=substr($i,1,1) toupper(substr($i,2,1)) substr($i,3)
}
else{
$i=toupper(substr($i,1,1)) substr($i,2)
}
}
}
}
1
' Input_file
Этот код правильно вводит строки файла, когда соответствует некоторому тексту, в данном случае TITLE
. Идея состоит в том, чтобы использовать его для изменения некоторых файлов с контрольными листами и правильно использовать заглавные буквы в соответствии с тремя основными правилами c:
- Использовать заглавные буквы всех слов, за исключением:
- Строчные все статьи (a, the), предлоги (в, в, в, с) и координирующие союзы (и, но, или)
- Использование заглавных букв первого и последнего слова в названии независимо от части речи
Хорошо, я хотел бы изменить код awk, добавить второй массив со списком слов , чтобы исключить , и всегда записывать их так, как они написаны в the matrix .
Это было бы очень полезно для таких слов, как: McCartney, feat., vs. CD, USA, NY C, et c. Поскольку без этого массива исключений они будут изменены на: Mccartney, Feat., Cd, Usa, Ny c, et c. Это исключение должно быть даже в том случае, если эти слова являются первым и последним словом TITLE, как объяснено в соответствующем вопросе.
Например, с таким массивом: "McCartney feat. vs. CD USA NYC"
код должен преобразовать это:
FILE "Two The Beatles Songs.wav" WAVE
TRACK 01 AUDIO
TITLE "dig A pony, Feat. paul mccartney"
PERFORMER "The Beatles"
INDEX 01 00:00:00
TRACK 02 AUDIO
TITLE "From Me to You"
PERFORMER "The Beatles"
INDEX 01 03:58:02
В это:
FILE "Two The Beatles Songs.wav" WAVE
TRACK 01 AUDIO
TITLE "Dig a Pony, feat. Paul McCartney"
PERFORMER "The Beatles"
INDEX 01 00:00:00
TRACK 02 AUDIO
TITLE "From Me to You"
PERFORMER "The Beatles"
INDEX 01 03:58:02
Вместо этого:
FILE "Two The Beatles Songs.wav" WAVE
TRACK 01 AUDIO
TITLE "Dig a Pony, Feat. Paul Mccartney"
PERFORMER "The Beatles"
INDEX 01 00:00:00
TRACK 02 AUDIO
TITLE "From Me to You"
PERFORMER "The Beatles"
INDEX 01 03:58:02
Спасибо.