Sort
對文件的一部分進行排序
是否可以在大文件中的兩個字元串之間進行排序?
例如,目前文件為:
0cf Front Brake 0d0 Rear Brake 0ce Handle Bars HUT 03 VR Controls 009 Vest 001 Belt 002 Body Suit 020 Stereo Enable 003 Flexor 007 Hand Tracker 004 Glove 006 Head Mounted Display 008 Oculometer 00a Animatronic Device 000 Unidentified 021 Display Enable 005 Head Tracker HUT 04 Sport Controls 000 Unidentified 002 Golf Club 001 Baseball Bat
所需的輸出如下:
0ce Handle Bars 0cf Front Brake 0d0 Rear Brake HUT 03 VR Controls 000 Unidentified 001 Belt 002 Body Suit 003 Flexor 004 Glove 005 Head Tracker 006 Head Mounted Display 007 Hand Tracker 008 Oculometer 009 Vest 00a Animatronic Device 020 Stereo Enable 021 Display Enable HUT 04 Sport Controls 000 Unidentified 001 Baseball Bat 002 Golf Club
在這裡,HUT 03 VR Controls和HUT 04 Sports Controls部分進行了整理。
在給定的文件中,節標題以非空格字元開頭,而節內容始終以空格或製表符開頭。由於此文件有 100 多個部分,因此在腳本/命令中硬編碼部分名稱是不可行的
在 Python 中:
#!/usr/bin/python3 with open("file.txt", "r") as ins: lines = [] for line in ins: if line.startswith((" ", "\t")): lines.append(line) else: lines.sort() print(*lines, end = "", sep = "") print(line, end = "") lines = [] lines.sort() print(*lines, end = "", sep = "")
這會對所有部分(單獨)進行排序,而不僅僅是兩個特定行之間的部分。
為了好玩,這是一種使用以下方法對單個部分進行排序的方法
ex
:ex file <<% /HUT +1,/HUT/-1!sort w file.sorted q %