0
我想要做的多內容替換一行在下列文件中的Linux ed編輯:Linux的ed編輯多個搜索/替換一行
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
#/dev/dsk/c0d0s2 /dev/rdsk/c0d0s2 /usr ufs 1 yes -
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c0d0s3 - - swap - no -
/dev/dsk/c0d0s0 /dev/rdsk/c0d0s0 / ufs 1 no -
/dev/dsk/c0d0s4 /dev/rdsk/c0d0s4 /usr ufs 1 no -
/dev/dsk/c0d0s1 /dev/rdsk/c0d0s1 /var ufs 1 yes -
/dev/dsk/c0d0s7 /dev/rdsk/c0d0s7 /export ufs 2 yes -
/dev/dsk/c0d0s5 /dev/rdsk/c0d0s5 /usr/informix ufs 2 yes -
swap - /tmp tmpfs - yes -
我想交換的所有「C0」在的/ dev「C1」/ ....
這裏是我的正則表達式,我投入ED:1,\$s/\(\/dev.*\)\(c0\)\(d0s.*\)/\1c1\3/g
導致
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
#/dev/dsk/c0d0s2 /dev/rdsk/c1d0s2 /usr ufs 1 yes -
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c1d0s3 - - swap - no -
/dev/dsk/c0d0s0 /dev/rdsk/c1d0s0 / ufs 1 no -
/dev/dsk/c0d0s4 /dev/rdsk/c1d0s4 /usr ufs 1 no -
/dev/dsk/c0d0s1 /dev/rdsk/c1d0s1 /var ufs 1 yes -
/dev/dsk/c0d0s7 /dev/rdsk/c1d0s7 /export ufs 2 yes -
/dev/dsk/c0d0s5 /dev/rdsk/c1d0s5 /usr/informix ufs 2 yes -
swap - /tmp tmpfs - yes -
然而,這漫長的正則表達式:
1,\$s/\(\/dev.*\)\(c0\)\(d0s.*\)\(\/dev.*\)\(c0\)\(d0s.*\)/\1c1\3\4c1\6/g
結果在此:
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
#/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2 /usr ufs 1 yes -
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c0d0s3 - - swap - no -
/dev/dsk/c1d0s0 /dev/rdsk/c1d0s0 / ufs 1 no -
/dev/dsk/c1d0s4 /dev/rdsk/c1d0s4 /usr ufs 1 no -
/dev/dsk/c1d0s1 /dev/rdsk/c1d0s1 /var ufs 1 yes -
/dev/dsk/c1d0s7 /dev/rdsk/c1d0s7 /export ufs 2 yes -
/dev/dsk/c1d0s5 /dev/rdsk/c1d0s5 /usr/informix ufs 2 yes -
swap - /tmp tmpfs - yes -
離開第一 「C0」仍然爲 「C0」,因爲它不是由搜索字符串發現
所以我得到了一個文件,我在一行中獲得了多個搜索結果,但它只替換了一個實例。我知道「全局」標誌在文件的第一步中運行,並標記匹配的行。我希望我知道是什麼原因引發了這個問題,但是我沒有足夠的經驗知道如何解決這個問題。
乾杯您的幫助
請提供包含數據,結果和預期結果的[示例](https://stackoverflow.com/help/mcve)。 – ArturFH