shell中特殊符的使用
参考: https://www.cnblogs.com/du-z/p/15322745.html
示例:file=”/dir1/dir2/dir3/my.file.txt”
“#”: 表示最短匹配
1
| ${file#*/}:删掉第一个/ 及其左边的字符串:dir1/dir2/dir3/my.file.txt
|
“##”: 表示最长匹配
1
| ${file##*/}:删掉最后一个/ 及其左边的字符串:my.file.txt
|
“%”: 表示从右开始的第一个匹配
1
| ${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
|
通过从左到右的某个字节数开始截取,截取多少个字节
1
| ${file:5:5}:提取第5 个字节右边的连续5个字节:/dir2
|
计算变量值的长度
变量值中的字符串替换
1 2
| ${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt ${file//dir/path}:将全部dir 替换为path:/path1/path2/path3/my.file.txt
|
反向截取字符的方法
rev命令是将输入行反转
1 2
| echo "2024-03-13_144312-1302944-gpio_001_pass.tar.gz" | rev | awk -F'-' '{print $1}' | rev 结果:gpio_001_pass.tar.gz
|
实现同名排序(sort)
1 2 3 4 5 6 7 8 9 10 11 12 13
| find -name "*failure*" | rev | awk -F'-' '{print $1}' | rev | awk -F'_' '{print $1"_"$2}' | sort 结果如下: hdmi_121 hdmi_121 hdmi_121 hdmi_121 hdmi_121 hdmi_121 rtc_004 rtc_004 vpu_018 vpu_018 vpu_018
|
统计同名的个数(uniq -c)
1 2 3 4 5
| find -name "*failure*" | rev | awk -F'-' '{print $1}' | rev | awk -F'_' '{print $1"_"$2}' | sort | uniq -c 统计结果: 110 hdmi_121 2 rtc_004 3 vpu_018
|