行中间的文本替换(linux命令)

行中间的文本替换(linux命令)
/dev/mapper/vgsys0-xxxx /tmp ext4 nodev,nosuid,noexec,rw 1 2

替换如下

/dev/xxxxx/xxxxx-xxxx /tmp ext4 defaults,rw,nosuid,nodev,noexec 1 2

你能帮我搜索/tmp单词并将其替换为/tmp ext4 nodev,nosuid,noexec,rw 1 2,但 /tmp 之前的文本不应更改,示例 /dev/mapper/vgsys0-lvtmp 可以是任何内容,只需使用 /tmp 进行搜索并使用前缀/tmp ext4 defaults,rw,nosuid,nodev,noexec 1 2

答案1

因此,您想要更改之后的文本/tmp。您可以使用:

sed -E 's|([! ]*) /tmp.*$|\1 /tmp ext4 defaults,rw,nosuid,nodev,noexec 1 2|' file_name

例如

echo '/dev/mapper/vgsys0-xxxx /tmp' | sed -E 's|([! ]*) /tmp.*$|\1 /tmp ext4 defaults,rw,nosuid,nodev,noexec 1 2|'

输出:

/dev/mapper/vgsys0-xxxx /tmp ext4 defaults,rw,nosuid,nodev,noexec 1 2
echo '/dev/mapper/vgsys0-xxxx /tmp ext4 anyting,nosuid,noexec,rw 1 2' | sed -E 's|([! ]*) /tmp.*$|\1 /tmp ext4 defaults,rw,nosuid,nodev,noexec 1 2|'

输出:

/dev/mapper/vgsys0-xxxx /tmp ext4 defaults,rw,nosuid,nodev,noexec 1 2

相关内容