如何用字符串“ \ |”替换空格 使用sed?

杰米·拉蒙(Jamie Ramone)

我试图建立一个排除列表,以通过外壳变量传递给“ 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”。

编辑

mount的输出是

/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

如前所述。

hek2mgl

您可以使用一个awk命令:

mount | awk '!/\/dev\//{sub("/",d,$3);print $3;d="\\|"}' ORS=''

使用给定的输入mount将打印

dev\|proc\|sys\|tmp\|var/run

说明:

# Applies to all lines with does not match /dev
!/\/dev/{
    # Remove leading / with delimiter d
    # d will be empty upon first use
    sub("/","",$3)
    # Print the column
    print $3
    # Set delimiter after first usage
    d="\\|"
}

ORS='' 将使awk的输出记录分隔符静音。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章