是否可以在bash中使用sed中的某些字符串切換行的位置?bash中的開關線位置
例如:
我有這兩者都是輸出作爲bash命令到一個文本文件的部分的線
2. diskusage1: 27.0572519084
3. partition1:
。
有沒有辦法顛倒這些線的順序?爲了讓他們交換位置,看起來像:
3. partition1:
2. diskusage1: 27.0572519084
感謝
是否可以在bash中使用sed中的某些字符串切換行的位置?bash中的開關線位置
例如:
我有這兩者都是輸出作爲bash命令到一個文本文件的部分的線
2. diskusage1: 27.0572519084
3. partition1:
。
有沒有辦法顛倒這些線的順序?爲了讓他們交換位置,看起來像:
3. partition1:
2. diskusage1: 27.0572519084
感謝
從註釋中繼續,是的,你可以很容易地使用反向輸出的線或者tac
(cat
以相反的順序)或sed
。在這兩種情況下,只需將所運行的任何命令的輸出傳送至tac
或sed
即可。如果你需要寫顛倒內容到一個文件,然後簡單地添加一個重定向到結束(如> file.txt
)
使用tac
這簡直就是
some_command | tac > file.txt
使用sed
這將是:
some_command | sed -n '1!G;h;$p' > file.txt
例
您的輸出:
$ printf "2. diskusage1: 27.0572519084\n3. partition1:\n"
2. diskusage1: 27.0572519084
3. partition1:
反向輸出
$ printf "2. diskusage1: 27.0572519084\n3. partition1:\n" | tac
3. partition1:
2. diskusage1: 27.0572519084
或
$ printf "2. diskusage1: 27.0572519084\n3. partition1:\n" | sed -n '1!G;h;$p'
3. partition1:
2. diskusage1: 27.0572519084
給他們一個嘗試,讓我知道,如果您還有其他問題。
看起來第二和第三不僅是線條。 – hedgar2017
是的,同意了,好點,但我只能繼續討論問題。如果是1-50,那麼我們需要創造性地使用一個計數器,''read''或'readarray'使用'tac'或一個排除範圍使用'sed'或者'head'和'tail'結合使用' :)'。 –
這將做:
command | sed '2{h;d};3{p;x}' > file.txt
是,管無論是產生輸出到'tac'(這是'反向cat')的輸出例如'some_command | tac'。如果你需要把它寫入文件的後面,那麼'some_command | tac> file.txt'示例:'printf「2. diskusage1:27.0572519084 \ n3。partition1:\ n」| tac' –
如果你必須使用'sed',那麼'some_command | sed -n'1!g; h; $ p'' –
爲了交換任意行,請看[這個問題](https://stackoverflow.com/questions/4331851/swapping-two-lines) –