У меня есть текстовый файл с именами файлов, которые я хотел бы динамически добавлять в конец каждой строки. Например, я хотел бы следующее:
/home/danrothaudiodsp/kaldi-trunk/egs/voxforge/s5/voxforge/extracted/1028-20100710-hne/wav/ar-01.wav
/home/danrothaudiodsp/kaldi-trunk/egs/voxforge/s5/voxforge/extracted/1028-20100710-hne/wav/ar-02.wav
становиться:
/home/danrothaudiodsp/kaldi-trunk/egs/voxforge/s5/voxforge/extracted/1028-20100710-hne/wav/ar-01.wav /home/danrothaudiodsp/gfcc_train/ar-01.gfcc
/home/danrothaudiodsp/kaldi-trunk/egs/voxforge/s5/voxforge/extracted/1028-20100710-hne/wav/ar-02.wav /home/danrothaudiodsp/gfcc_train/ar-02.gfcc
Для этого необходимо перебрать большой текстовый файл со многими строками, подобными этой.
У меня уже есть следующая команда awk:
awk '{$2 = "/home/danrothaudiodsp/gfcc_train/" OFS $2} 1' file > newfile
но я ищу значение для заполнения после последнего символа «/», следующего за gfcc_train.





Это выражение,
((/[^/]+/[^/]+/[^/]+).+/(.+)\.wav)
может быть полезно изучить и перевести его на awk.
$ awk '{fname=$0; sub(/.*//,"",fname); sub(/\.[^.]+$/,"",fname); print $0, "/home/danrothaudiodsp/gfcc_train/" fname ".gfcc"}' file
/home/danrothaudiodsp/kaldi-trunk/egs/voxforge/s5/voxforge/extracted/1028-20100710-hne/wav/ar-01.wav /home/danrothaudiodsp/gfcc_train/ar-01.gfcc
/home/danrothaudiodsp/kaldi-trunk/egs/voxforge/s5/voxforge/extracted/1028-20100710-hne/wav/ar-02.wav /home/danrothaudiodsp/gfcc_train/ar-02.gfcc
Проблема с этими онлайн-инструментами регулярных выражений заключается в том, что они не учитывают должным образом инструмент командной строки, в котором вы хотите использовать регулярное выражение, поэтому они почти всегда проверяют некоторые регулярные выражения, которые просто не будут работать в целевом инструменте, и часто целевой инструмент имеет более простой (или более надежный, или иной лучший) способ выполнить задачу в любом случае. Таким образом, использование онлайн-инструмента для изучения регулярных выражений в целом хорошо, но использование одного из них для создания / проверки регулярного выражения для использования в любом данном инструменте командной строки практически бесполезно.