linux - 如何根据最后一个单词PATH中的前两个字符对文件进行排序

标签 linux bash sorting awk sed

请指教如何根据最后一个单词 PATH 中的前两个字符对文件进行排序(使用 sort 命令)

   /dir/dir/dir/LAST_WORD_PATH

例子:

如果下面的路径是

      /Config/EMA/M5/Hatki Tekom/Customer Files/fSE-TMOLE.txt

所以最后一个单词PATH应该是

    fSE-TMOLE.txt

目标是对“last word PATH”中的前两个字符进行排序

然后前两个字符是(来自fSE-TMOLE.txt)

    fS

完整示例

排序前

     /Config/EMA/M5/Cmo Buria Mobile/dzs Bulia Mole.txt
     /Config/EMA/M5/Hatki Tekom/Customer Files/fAE-TMOLE.txt
     /Config/EMA/M5/Cmo Buria Mobile/dos Bulia Mole.txt
     /Config/EMA/M5/Cmo Bgaia Mobile/Fustoer files/Backup/Cos Buia Mole-2.txt
     /Config/EMA/M5/VFONE Roia/Cbdne.ro.txt
     /Config/EMA/M5/TEKOM SRJA/IELOM SRJA.txt
     /Config/EMA/M5/VP Moe/Bobile.txt

排序后

     /Config/EMA/M5/VP Moe/Bobile.txt
     /Config/EMA/M5/VFONE Roia/Cbdne.ro.txt
     /Config/EMA/M5/Cmo Bgaia Mobile/Fustoer files/Backup/Cos Buia Mole-2.txt
     /Config/EMA/M5/Cmo Buria Mobile/dos Bulia Mole.txt
     /Config/EMA/M5/Cmo Buria Mobile/dzs Bulia Mole.txt
     /Config/EMA/M5/Hatki Tekom/Customer Files/fAE-TMOLE.txt
     /Config/EMA/M5/TEKOM SRJA/IELOM SRJA.txt

最佳答案

这是一种方法:

#!/bin/bash
while read f
do
   b=$(basename "$f")   # Get basic name of file without path
   b2=${b:0:2}          # Extract first 2 letters
   echo $b2:$f          # Output for awk to read with colon separator
done < file | sort -f | awk -F: '{print $2}'

关于linux - 如何根据最后一个单词PATH中的前两个字符对文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24798281/

相关文章:

将毫秒转换为天的 Bash 脚本 :Hours:Minutes:Seconds:Milliseconds

linux - 删除文件中匹配一个字符串但不匹配另一个字符串的行 - SED,BASH?

c++ - 按字母顺序排列字符串数组(甚至 *ptr)

用于重新配置 Linux 集群网络拓扑的 Python 脚本

linux - 无法在Kali Linux上为TP-Link WN821N构建RTL8192EU驱动程序

bash - FFMPEG,任何视频到 16 :9

java - 如何根据一个属性对对象数组列表进行排序?

linux - 什么时候在 linux 中打开端口?

linux - 使用 $1 在 bash 脚本中使用 awk 提取一些文本

javascript - Meteor JS - 添加新帖子时 $sort 不起作用