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 的行,並將最後一行列印出來。