Файл с именем start.txt существует. Я использую команду perl, которая дает измененный вывод с использованием содержимого start.txt, и я пытаюсь перезаписать измененный вывод в тот же файл
cat start.txt | perl -ne 'print "$1-$1.mp4 Lecture $2 -\n" while /.*\/videos\/(.*?mp4).*?(?<= )(\d+)/g;'> start.txt
Выполнение вышеуказанной команды запускает файл. txt по какой-то причине пуст
Нет проблем с моей командой, потому что если я создам новый файл для перенаправления вывода, например ..
cat start.txt | perl -ne 'print "$1-$1.mp4 Lecture $2 -\n" while /.*\/videos\/(.*?mp4).*?(?<= )(\d+)/g;'> test.txt
Это отлично сохранит ожидаемый результат в test.txt но я не хочу создавать дополнительные файлы, мне нужно перезаписать сам существующий файл.
Я попробовал >|
после прочтения, когда он использовался для принудительной перезаписи файлов, но все еще та же проблема. Я даже пробовал | tee start.txt
, по-прежнему приводит к тому, что файл становится пустым.
Примечание: есть несколько команд awk, которые я использую, если я пытаюсь сохранить / перенаправить вывод в файл, из которого Функция awk читает текст из, это вызывает ту же проблему, что и выходной файл пуст, я бы тоже вставил команду awk, если кто-то спросит, хотя я думаю, что для этого было бы универсальное решение