добавить файл и каталог в /

Вы можете подойти к этому, используя следующие методы:

perl -lpe '$_ = $1 if /\.(.*\..*)/' input-file.txt

при этом мы полагаемся на regex, который обнуляется символом точки ., который может видеть другую точку справа от него. Затем все, что находится справа, захватывается и становится доступным в $1и вставляется в текущую строку. Параметр -pдля Perlзатем переносит это в stdout, а также тот, который не совпал.


perl -F\\. -pale '$_ = join ".", splice @F, 1 if @F > 2' input.txt
  • Входной файл считывается строкой -за строкой -с помощью опции -p, и автопечать также включается с помощью этой опции.

  • Каждая запись разбивается на точку ., а отдельные поля, хранящиеся в массиве @F, индексируются, начиная с 0с помощью опции -a.

  • -lопция делаетRS = ORS = "\n"

  • Только когда у нас в массиве @Fбольше 2 элементов, то есть в текущей записи было хотя бы 2 точки, мы выбираем такую ​​запись для модификации.

  • Для такой записи функция splice @F, 1удаляет элементы, начиная со 2-го и далее, и представляет их функции join, которая затем соединяет их с помощью символа точки, который затем вставляется внутрь $_, также известной как текущая запись..

  • Опция -pвыводит эту измененную текущую запись на стандартный вывод. Тот, который не изменился, в любом случае молча выводится на стандартный вывод.


Используя GNU sedмы также можем выполнить задачу, не прибегая к захвату скобок:

sed -e 
    s/\./\n/2;T
    y/\n./.\n/
    s/\n/./2g
    s/.*\n//
' input.file

Выход:

akamai.com
cloudflare.com
cdn.cloudflare.net
0
23.07.2020, 00:22
1 ответ

Вы можете использовать символические ссылки:

ln -s /etc /test

Это создаст ссылку из /etc в /test, если вы измените что-то в /test, это будет изменено и в /etc.

Вы можете использовать жесткие ссылки для файлов:

ln file testfile

Как и в случае с символическими ссылками, если вы измените testfile, fileтакже будет изменен.

also if I remove it from /test will be removed /

будьте осторожны при удалении символических ссылок, не делайте rm -r test/ *, потому что это приведет к удалению /etc. Вместо этого используйтеunlink(1)

unlink /test

0
18.03.2021, 23:18

Теги

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