如何在Sublime Text中按正则匹配的城市名排序行
按城市名排序旅行地点列表
我整理了一份按国家排序的去过的地点列表:
🇦🇱 Albania :: Tirana 🇦🇹 Austria :: Vienna 🇧🇾 Belarus :: Minsk 🇧🇪 Belgium :: Brussels 🇧🇬 Bulgaria :: Burgas 🇧🇬 Bulgaria :: Sofia 🇧🇬 Bulgaria :: Varna 🇰🇭 Cambodia :: Phnom Penh 🇰🇭 Cambodia :: Siem Reap 🇨🇳 China :: Beijing 🇭🇷 Croatia :: Zagreb 🇨🇾 Cyprus :: Ayia Napa 🇨🇾 Cyprus :: Larnaca 🇨🇿 Czechia :: Prague 🇩🇰 Denmark :: Copenhagen 🇪🇪 Estonia :: Tallinn 🇫🇷 France :: Metz 🇫🇷 France :: Paris 🇩🇪 Germany :: Berlin 🇩🇪 Germany :: Munich 🇬🇷 Greece :: Rohdus 🇭🇺 Hungary :: Budapest 🇮🇳 India :: Anjuna Beach 🇮🇳 India :: Baga Beach 🇮🇳 India :: Calangute Beach 🇮🇳 India :: Fort Kochi* 🇮🇳 India :: Mumbai 🇮🇳 India :: Mysore 🇮🇳 India :: Sivananda Ashram 🇮🇳 India :: Thiruvananthapuram 🇮🇳 India :: Varkala 🇮🇪 Ireland :: Dublin 🇮🇱 Israel :: Ashdod 🇮🇱 Israel :: Dimona 🇮🇱 Israel :: Eilat 🇮🇱 Israel :: Givatayim 🇮🇱 Israel :: Hadera 🇮🇱 Israel :: Haifa 🇮🇱 Israel :: Holon 🇮🇱 Israel :: Jerusalem 🇮🇱 Israel :: Lod 🇮🇱 Israel :: Modi'in-maccabim-re'ut 🇮🇱 Israel :: Nes ẔIyyona 🇮🇱 Israel :: Netanya 🇮🇱 Israel :: Or Yehuda 🇮🇱 Israel :: Petaẖ Tiqwa 🇮🇱 Israel :: Qiryat Bialik 🇮🇱 Israel :: Ramat Hasharon 🇮🇱 Israel :: Ramla 🇮🇱 Israel :: Ra‘ananna 🇮🇱 Israel :: Rehovot 🇮🇱 Israel :: Rishon Leẕiyyon 🇮🇱 Israel :: Rosh Ha‘ayin 🇮🇱 Israel :: Tel Aviv-yafo 🇮🇱 Israel :: Tiberias 🇮🇱 Israel :: Yehud-monosson 🇮🇹 Italy :: Milan 🇮🇹 Italy :: Rome 🇽🇰 Kosovo :: Pristina 🇱🇦 Laos :: Luang Prabang 🇱🇦 Laos :: Vang Vieng 🇱🇦 Laos :: Vientiane 🇱🇻 Latvia :: Riga 🇱🇹 Lithuania :: Vilnius 🇱🇺 Luxembourg :: 🇲🇪 Montenegro :: Bar 🇲🇪 Montenegro :: Budva 🇲🇪 Montenegro :: Kotor 🇲🇪 Montenegro :: Perast 🇲🇪 Montenegro :: Tivat 🇲🇪 Montenegro :: Ulcinj 🇳🇱 Netherlands :: Amsterdam 🇳🇱 Netherlands :: Rotterdam 🇲🇰 North Macedonia :: Ohrid 🇲🇰 North Macedonia :: Skopje 🇳🇴 Norway :: Oslo 🇵🇭 Philippines :: Manila 🇵🇱 Poland :: Auschwitz 🇵🇱 Poland :: Kraków 🇵🇱 Poland :: Przemysl 🇵🇱 Poland :: Warsaw 🇵🇹 Portugal :: Lisbon 🇵🇹 Portugal :: Porto 🇷🇴 Romania :: Bucharest 🇷🇺 Russia :: Moscow 🇷🇺 Russia :: Saint Petersburg 🇷🇸 Serbia :: Belgrade 🇷🇸 Serbia :: Niš 🇸🇬 Singapore :: Bayfront 🇸🇬 Singapore :: Bugis 🇸🇬 Singapore :: Changi 🇸🇬 Singapore :: Chinatown 🇸🇬 Singapore :: City Hall 🇸🇬 Singapore :: Clarke Quay 🇸🇬 Singapore :: Dhoby Ghaut 🇸🇬 Singapore :: Little India 🇸🇬 Singapore :: Marina Bay 🇸🇬 Singapore :: Orchard 🇸🇬 Singapore :: Raffles Place 🇸🇬 Singapore :: Somerset 🇸🇰 Slovakia :: Bratislava 🇰🇷 South Korea :: Seoul 🇪🇸 Spain :: Barcelona 🇸🇪 Sweden :: Stockholm 🇨🇭 Switzerland :: Basel 🇨🇭 Switzerland :: Zürich 🇹🇭 Thailand :: Bangkok 🇹🇭 Thailand :: Chiang Mai 🇹🇭 Thailand :: Chiang Rai 🇹🇭 Thailand :: Hat Yai 🇹🇭 Thailand :: Ko Pha Ngan 🇹🇭 Thailand :: Krabi 🇹🇭 Thailand :: Nong Khai 🇹🇭 Thailand :: Pai 🇹🇭 Thailand :: Pattaya 🇹🇭 Thailand :: Phuket 🇹🇭 Thailand :: Udon Thani 🇹🇷 Turkey :: Antalya 🇹🇷 Turkey :: Bodrum 🇹🇷 Turkey :: Istanbul 🇺🇦 Ukraine :: Kherson 🇺🇦 Ukraine :: Kyiv 🇺🇦 Ukraine :: Lviv 🇺🇦 Ukraine :: Mykolaiv 🇺🇦 Ukraine :: Odesa 🇺🇦 Ukraine :: Uman 🇬🇧 United Kingdom :: London 🇬🇧 United Kingdom :: Manchester 🇻🇳 Vietnam :: Da Nang 🇻🇳 Vietnam :: Hanoi 🇻🇳 Vietnam :: Ho Chi Minh City 🇻🇳 Vietnam :: Mui Ne 🇻🇳 Vietnam :: Nha Trang
我希望能按城市名排序,也就是按每行最后一个正则匹配项排序。已经能用正则表达式匹配所有城市名:
:: (.*?)
现在需要完成最后一步:对这些行按城市名排序,以下是几种实用方法:
方法1:VS Code操作步骤
- 打开列表文件,按
Ctrl+H调出替换面板,点击左上角.*按钮启用正则模式 - 「查找」框输入:
^(.*?:: )(.*)$ - 「替换」框输入:
$2|||$1$2(用|||做临时分隔符,把城市名移到行首) - 点击「全部替换」,此时每行格式变为
城市名|||原行内容 - 选中所有行,按
Ctrl+Shift+P打开命令面板,输入Sort Lines并执行,完成按城市名排序 - 再次打开替换面板,查找
^(.*?)|||,替换为空,点击「全部替换」恢复原格式
方法2:Sublime Text操作步骤
- 打开列表,按
Ctrl+H打开替换窗口,勾选「Regular Expression」选项 - 查找内容:
^(.*?:: )(.*)$,替换内容:$2---$1$2 - 点击「Replace All」后,选中所有行,执行
Edit → Sort Lines - 再次打开替换窗口,查找
^(.*?)---,替换为空,恢复原行格式
方法3:命令行(Linux/macOS)
如果用终端处理,假设文件名为travel_list.txt,执行以下命令:
sed 's/^\(.*:: \)\(.*\)$/\2|||\1\2/' travel_list.txt | sort | sed 's/^.*|||//' > sorted_travel_list.txt
逻辑说明:
- 第一个
sed命令把城市名移到行首并添加分隔符 sort命令按行首的城市名排序- 第二个
sed命令去掉临时添加的行首内容,结果输出到sorted_travel_list.txt中
内容的提问来源于stack exchange,提问作者Hezi-Gangina
相关产品推荐
相关产品推荐

