Sed e'/test/h' e'$g,file是什麼意思
sed
是一個流編輯器,它允許你編輯文本檔案的一行或多行。在 sed
中,e
命令用於執行外部命令,h
命令用於將當前 pattern space(模式空間,即當前正在處理的行)的內容複製到 hold space(保持空間),$
表示檔案的最後一行,g
命令用於將 hold space 的內容複製回 pattern space。
所以,sed e'/test/h' e'$g,file是什麼意思
這個命令的意思是:
- 使用
e
命令執行外部命令/test/h
,這個命令會查找包含test
的行,並將該行的內容複製到 hold space。 - 使用
e
命令執行外部命令$g
,這個命令會將 hold space 的內容複製回 pattern space,並確保它是最新的(即覆蓋任何以前的模式空間內容)。 - 由於
file
沒有指定,我們可以假設sed
應該在標準輸入上操作,所以sed
會讀取標準輸入直到最後一行,然後執行上述操作。
然而,這個命令看起來並不是一個有效的 sed
命令,因為它沒有指定任何檔案名稱或輸入流。如果你想要在檔案中查找包含 test
的行,並將最後一行複製到 hold space,然後列印出來,你可以使用以下命令:
sed -n '/test/h;$!d;x;p' file
這個命令的意思是:
-n
告訴sed
不要自動列印輸出。/test/h
表示當遇到包含test
的行時,將當前行複製到 hold space。$!d
表示除了最後一行以外的所有行都應該被刪除(d
命令用於刪除當前行)。x
命令用於交換 pattern space 和 hold space 的內容,這樣最後一行就會出現在 pattern space。p
命令用於列印 pattern space 的內容,即最後一行。
請注意,這個命令假設 file
是存在的,並且包含一些文本。如果你想要在標準輸入上操作,你可以使用 -
作為檔案名稱,例如:
sed -n '/test/h;$!d;x;p' -
這將讀取標準輸入,查找包含 test
的行,並將最後一行列印出來。