请阅读【嵌入式开发学习必备专栏 】
awk 处理文件名,去除后缀只保留文件名
在 shell 中, 可以使用 awk
来处理文件名,去除其后缀。下面是一个示例命令,它会将带有后缀的文件名作为输入,并输出没有后缀的文件名:
filename="example.txt"
basename=$(echo "$filename" | awk -F"." '{OFS="."; $NF=""; sub(/\.$/, "", $0); print}')
echo "$basename"
这个命令片段做了以下几件事情:文章来源:https://www.toymoban.com/news/detail-844790.html
-
-F"."
设置了输入字段的分隔符为点号(.
),这是文件后缀的通常分隔符。 -
OFS="."
设置了输出字段的分隔符也为点号。 -
$NF=""
将最后一个字段(即文件的后缀)设置为空字符串。 -
sub(/\.$/, "", $0)
使用正则表达式匹配行末尾的点号并将其删除。 -
print
输出处理后的行,即没有后缀的文件名。
这将输出example
(去掉了.txt
后缀)。
另一种更简单的方法是使用rev
和cut
命令组合,这可能更容易理解,而且不需要awk
:
filename="example.txt"
basename=$(echo "$filename" | rev | cut -d"." -f2- | rev)
echo "$basename"
这个命令的工作原理是:文章来源地址https://www.toymoban.com/news/detail-844790.html
- 使用
rev
命令反转文件名字符串。 - 使用
cut
命令以点号为分隔符,选取反转后的第二个字段到最后(即除去了第一个字段,也就是原始字符串的后缀部分)。 - 再次使用
rev
命令反转结果回到正常的顺序。
例如,对于文件名example.txt
,这也会输出example
。
请注意,如果文件名中有多个点号,以上方法会去掉最后一个点号及其之后的部分。如果文件名中有版本号或多个后缀,可能需要其他方法来处理。
awk -F "\"" '{print$2}' auto_generate.h | awk -F"." '{OFS="."; $NF=""; sub(/\.$/, "", $0); print}'
到了这里,关于【嵌入式开发 Linux 常用命令系列 7.4 -- awk 处理文件名,去除后缀只保留文件名】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!