我有以下幾點:。需要幫助建立的Linux腳本
...
#define DIRT 4
#define PLANKS 5
#define WOOD_PLANKSs 5
#define BRICKS 6
...
我需要刪除具有相同數量作爲他們前行的線路之一(防爆取出木板,因爲woodplanks具有相同的號碼, 5)。
是否有一種方法可以在linux(或Windows)腳本中執行此操作,也許使用if then語句?
我有以下幾點:。需要幫助建立的Linux腳本
...
#define DIRT 4
#define PLANKS 5
#define WOOD_PLANKSs 5
#define BRICKS 6
...
我需要刪除具有相同數量作爲他們前行的線路之一(防爆取出木板,因爲woodplanks具有相同的號碼, 5)。
是否有一種方法可以在linux(或Windows)腳本中執行此操作,也許使用if then語句?
在Linux上,使用uniq
命令和參數-f
跳過比較前兩個字段:uniq -f 2 <your-file>
所以,如果我想刪除file.txt中的WOOD_PLANKS行,那麼我會用什麼? –
上面的命令將通過發佈'uniq -f 2 file.txt'去除'WOOD_PLANKS'(以及任何其他具有重複的第三列的行) – carlpett
創建一個名爲removeDup.awk一個awk腳本作爲
1 BEGIN { lastDefine=""
2 }
3 /^#define/ { if (lastDefine=="") {
4 lastDefine=$3
5 } else {
6 if (lastDefine==$3) {
7 next
8 } else {
9 lastDefine=$3
10 }
11 }
12 }
13 { print
14 }
的awk -f removeDup。 awk文件名
好吧,那看起來像我要發佈的解決方案,那會如果該文件可能包含其他非定義行,則需要該文件。 +1的努力;) – jwatkins
當我訪問Linux計算機或可以找到一個在線shell時,我會試試這個。 –
您的文件是否僅由「define」條目組成,還是文件中的其他行?重複的項目是否總是連續的? – jwatkins
重複的值始終是連續的,它只能由#define NAME# –
組成,然後轉到carlpett的解決方案;)。 – jwatkins