Как заменить пробел на __

find +bashраствор:

find /log -type f -name "*.1" -exec bash -c 'gzip -nc "$1" > "${1:0:-2}.gz"; rm "$1"' _ {} \;

gzipопции:

  • -n-при сжатии не сохранять оригинальное имя файла и отметку времени по умолчанию
  • -c-запись вывода на стандартный вывод; оставить исходные файлы без изменений

${1:0:-2}-bash's нарезка ; получить путь к файлу с усеченными последними 2 символами

-2
12.03.2020, 16:13
2 ответа

С sed, предполагая, что целью является замена каждого пробела символом подчеркивания (_), для всех пробелов в строках

sed 's/ /_/g' file

Тесты

$ cat file
ACTTTTTTTTGSGSGSGSG  TTT
RTATATTATRSSTSTSTST  HHH

$ sed 's/ /_/g' file
ACTTTTTTTTGSGSGSGSG__TTT
RTATATTATRSSTSTSTST__HHH
2
28.04.2021, 23:20

Добавление к ответу @Paulo Tomé, предполагая, что может быть больше , чем два пробела:

tr -s '[[:blank:]]' < file | sed 's/[[:blank:]]/__/'

Предполагая, что это всегда два пробела:

tr '[[:blank:]]' '_' < file 

Это работает, даже если пробелы являются вкладками:

1
28.04.2021, 23:20

Теги

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