Как минимум с gawk
и mawk
, вы можете рассматривать каждый символ как поле, установив пустой разделитель полей. Так, например, вы можете сделать
gawk -F '' '$5 == "*" || $10 == "*"' test.txt
, что приведет к печати совпадающих записей (строк) с использованием правила печати по умолчанию.
Аналогичный трюк в perl
(обратите внимание, что поля имеют нулевой индекс)
perl -F'' -ane 'print if $F[4] eq "*" || $F[9] eq "*"' test.txt
Это (притворяется) удалит любые различия между папками:
diff -awr folderA folderB | sed 's/Only in //;s/: /\//' | while read f; do echo "removing ${f}"; done;
Если вы хотите удалить различия в A, но не в B, вы можете добавить grep следующим образом:
diff -awr folderA folderB | sed 's/Only in //;s/: /\//' | grep "^folderA/" | while read f; do echo "removing ${f}"; done;
обратите внимание, что вы должны ввести folderA в команду дважды для этого
Чтобы запустить ее по-настоящему, просто замените echo "remove $ {f}";
на rm -f "$ {f}";
Вы можете сослаться на эту ссылку эта ссылка. rsync имеет функцию удаления папки, которая не закрывается на live ENV
.
rsync -av --delete