我想使用bash在enigma2 dreambox中對我的頻道列表進行排序。該文件是這樣的:如何在bash中一次排序兩行,使用第二行作爲索引?
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3A//server.com/movie/1/new.aviM
#DESCRIPTION new 5[EN]
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3A//server.com/movie/11/all2.mkvM
#DESCRIPTION all 2 [EN]
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3A//server.com/movie/movie3.mp4M
#DESCRIPTION movie 3 [EN]
正如你可以在文件中看到,每個通道由兩條線組成。我想每次在bash中排序兩行。
結果應該是這樣的:
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3A//server.com/movie/11/all2.mkvM
#DESCRIPTION all 2 [EN]
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3A//server.com/movie/movie3.mp4M
#DESCRIPTION movie 3 [EN]
#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3A//server.com/movie/1/new.aviM
#DESCRIPTION new 5[EN]
第一個是all 2 [EN]
與SERVICE
它上面。
其次是電影movie 3 [EN]
以及其上的SERVICE
。
三是電影new 5[EN]
,其上方有SERVICE
。
我現在正在使用一個循環,這是非常緩慢的。我認爲這是可以使用bash
可能的解決方案來實現更快,例如:
每兩行合併到一行。第二行需要是第一行,並將上面的行添加到它。結果應該是這樣的:
#DESCRIPTION new 5[EN]#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3A//server.com/movie/1/new.aviM #DESCRIPTION all 2 [EN]#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3A//server.com/movie/11/all2.mkvM #DESCRIPTION movie 3 [EN]#SERVICE 4097:0:1:0:0:0:0:0:0:0:http%3A//server.com/movie/movie3.mp4M
排序
- 再次創建兩行。
命令** **轉速是不是在我的Linux的Dreambox。第二個選項是給出錯誤。 排序:bad -t parameter。 – simo
如果沒有'rev',你也可以嘗試'tac'。如果缺少'tac',請查看https://stackoverflow.com/q/22328828/3220113。或者嘗試找到另一種類型或嘗試'man sed'並找到改變分隔符的方法。或者,首先用'tr'替換所有空格,然後在兩個要加入awk的行之間插入一個空格,再用空格替換'\ r'。 –