Удалите символы неASCII из CSV

Я хочу удалить все символы неASCII из файла на месте.

Я нашел одно решение с TR, но я предполагаю, что должен записать тот файл обратно после модификации.

Я должен сделать это на месте с относительно хорошей производительностью.

Какие-либо предложения?

54
задан dda 19 July 2017 в 07:04
поделиться

3 ответа

# -i (inplace)

sed -i 's/[\d128-\d255]//g' FILENAME
41
ответ дан 7 November 2019 в 07:38
поделиться

Для этого подойдет perl oneliner: perl -i.bak -pe 's/[^[:ascii:]]//g' <ваш файл>

-i говорит, что файл будет отредактирован на месте, а резервная копия будет сохранена с расширением .bak.

70
ответ дан 7 November 2019 в 07:38
поделиться

В качестве альтернативы sed или perl вы можете использовать ed (1) и символ POSIX классы.

Примечание: ed (1) считывает весь файл в память для редактирования на месте, поэтому для действительно больших файлов следует использовать sed -i ..., perl -i ...

# see:
# - http://wiki.bash-hackers.org/doku.php?id=howto:edit-ed
# - http://en.wikipedia.org/wiki/Regular_expression#POSIX_character_classes

# test
echo $'aaa \177 bbb \200 \214 ccc \254 ddd\r\n' > testfile
ed -s testfile <<< $',l' 
ed -s testfile <<< $'H\ng/[^[:graph:][:space:][:cntrl:]]/s///g\nwq'
ed -s testfile <<< $',l'
3
ответ дан 7 November 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: