行の途中でテキストを置き換える(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

関連情報