В настоящее время я изучаю ускоренный курс по основам работы с терминалом Linux, и одна из задач - заменить знаки препинания в текстовом файле с помощью команд awk и tr. Я пробовал искать решения, но у меня ничего не работает, есть помощь?
Stack Overflow - это сайт для вопросов по программированию и разработке. Этот вопрос кажется не по теме, потому что он не о программировании или разработке. См. О каких темах я могу спросить здесь в Справочном центре. Возможно, лучше спросить Суперпользователь или Обмен стеков Unix и Linux.
Быстрый совет - tr -d '[:punct:]', но ваш вопрос очень расплывчатый: чем заменить?





Используя tr (как уже указал Гленн Джекман):
cat TEXTFILE | tr -d '[:punct:]' > OUTFILE
Использование awk (протестировано с gawk и mawk):
cat TEXTFILE | awk '{ gsub(/[[:punct:]]/, "", $0) } 1;' > OUTFILE
Вы также можете опустить cat с AWK:
awk '{ gsub(/[[:punct:]]/, "", $0) } 1;' TEXTFILE > OUTFILE
Примечание. TEXTFILE и OUTFILE должны быть разными.
Имейте в виду, у вас никогда не может быть OUTFILE, равного TEXTFILE. Взгляните на Башенные ловушки 13
@kvantour, да, я думаю, даже с cat нет гарантии, что cat закончит чтение до того, как awk захочет записать на него. Спасибо.
tr --help, -d удаляет tr -d [: punct:] <входной файл> выходной файл
Пожалуйста, добавьте образец ввода и желаемый результат для этого образца ввода к вашему вопросу.