Я пытаюсь настроить список исключений для передачи в "grep -v" через переменную оболочки, состоящую из точек монтирования с удаленным начальным символом "/" и разделенных пробелами. Я строю это так:
EXCLUDE_LIST=$(mount | grep -v '/dev/' | awk '{ print $3 }' | sed 's,^[^/]*/,,' )
В результате получается строка 'dev proc sys tmp var / run'. Это строка, которую я хочу заменить пробелами на '\ |' так что "grep -v" может его использовать.
Я пытался добавить
sed 's/ /\|/g'
к предыдущему конвейеру, затем
sed 's/ /\\|/g'
и
sed 's/ /\\\|/g'
То, что я хочу, это "dev \ | proc \ | sys \ | tmp \ | var / run", но я всегда получаю "dev proc sys tmp var / run".
EDIT
Выходные данные монтирования:
/dev/sda1 on / type ext4 (rw,reltime,nobarrier,commit=10)
devtmpfs on /dev type devtmpfs (rw,nosuid,relatime,sync,size=1024k,nr_inodes=502793,mode=755)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /dev/shm type tmpfs (rw,relatime,sync,size=1024k)
procfs on /proc type procfs (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /tmp type tmpfs (rw,relatime,sync,size=524288k)
tmpfs on /var/run type tmpfs (rw,relatime,sync,size=131072k)
Вывод «mount | grep -v '/ dev /'»:
devtmpfs on /dev type devtmpfs (rw,nosuid,relatime,sync,size=1024k,nr_inodes=502793,mode=755)
procfs on /proc type procfs (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /tmp type tmpfs (rw,relatime,sync,size=524288k)
tmpfs on /var/run type tmpfs (rw,relatime,sync,size=131072k)
Вывод «mount | grep -v '/ dev /' | awk {print $ 3}»:
/dev
/proc
/sys
/tmp
/var/run
И, наконец, вывод "mount | grep -v '/ dev /' | awk {print $ 3} | sed 's, ^ [^ /] * / ,,'" равен
dev proc sys tmp var/run
как указано ранее.