Цензура текста с помощью regex

Получите 4-й элемент вашего CSV с помощью.

cut -d , -f 4 myFile.csv  

Сохраните его в файл с помощью:

cut -d , -f 4 myFile.csv | cat >> my4thEltsFile.csv
6
18.08.2015, 00:12
1 ответ

Чтобы заменить все буквенно-цифровые символы наX:

$ tr '[:alnum:]' 'X' <file
- XXXXX XXXXX
  - XXXXX

Для заполнения пробелов между словами:

$ tr '[:alnum:]' 'X' <file | sed 's/X X/XXX/g'
- XXXXXXXXXXX
  - XXXXX

Или, используя толькоsed:

$ sed 's/[[:alnum:]]/X/g; s/X X/XXX/g' file
- XXXXXXXXXXX
  - XXXXX

Использование sed, как указано выше, но также ограничение модификации строками, начинающимися с тире, которым предшествуют необязательные пробелы и/или табуляция:

$ sed '/^[[:blank:]]*-/ { s/[[:alnum:]]/X/g; s/X X/XXX/g; }' file
- XXXXXXXXXXX
  - XXXXX

Вы можете заметить, что заполнение пробелов работает только тогда, когда в данных нет однобуквенных слов. Строка типа This is a treeбудет преобразована в XXXXXXXXX XXXX. Чтобы избежать этого, вы можете сделать простой цикл:

sed -e '/^[[:blank:]]*-/ { s/[[:alnum:]]/X/g; :again' \
    -e 's/X X/XXX/g; t again' -e '}' file

Это выполняет вторую замену, а затем возвращается к метке again, если эта замена действительно что-то изменила.

Или, проще, но без пробела в конце:

sed '/^[[:blank:]]*-/ { s/[[:alnum:]]/X/g; s/X /XX/g; }' file
2
24.01.2021, 09:18

Теги

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