Маловероятно, что ваш текущий конвейер работает так, как вы утверждаете, но не с инструментами BSD или GNU. Не уверен, что вы используете что-то другое.
Я смог придумать следующий цикл, чтобы выполнить то, что вы просите:
for prof in $(cut -d\; -f3 FILE.txt | sort | uniq -d); do
awk -v pat="$prof" -F\; '$3 ~ pat{print NR"-",$3}' FILE.txt
done
Это создаст список профессий, которые встречаются более одного раза, а затем используйте awk
, чтобы найти каждое их появление в файле, распечатав номер строки и название профессии.
awk установит профессию, собранную из конвейера cut -d\; -f3 FILE.txt | sort | uniq -d
, в параметр pat
, а затем будет искать в файле строки, содержащие этот шаблон в 3-м поле (, используя ;
в качестве разделителя полей ). Для совпадающих строк будет напечатан номер строки и 3-е поле (, разделенные тире ).
Да, bind mount работает.
Сначала я просто не понял. Но изучив /proc/self/mountinfo
, я понял лучше.
https://www.kernel.org/doc/Documentation/filesystems/proc.txt
общий :X Необязательное поле — это подсказка, а Mount ID , Parent ID также дал подсказку.
Существующий случай:
47 14 0:30 /hostname /etc/hostname rw,relatime shared:21 - tmpfs tmpfs rw,size=52724k
52 14 0:30 /etc/passwd /etc/passwd rw,relatime shared:21 - tmpfs tmpfs rw,size=52724k
37 34 0:30 / /DATA/var/volatile rw,relatime shared:21 - tmpfs tmpfs rw,size=52724k
36 35 0:30 / /var/volatile rw,relatime shared:21 - tmpfs tmpfs rw,size=52724k
Создан/скопирован файл в /var/volatile:
touch /var/volatile/hostname
mount --bind /var/volatile/hostname /etc/hostname