当前位置: 首页 > news >正文

【嵌入式开发 Linux 常用命令系列 7.4 -- awk 处理文件名,去除后缀只保留文件名】


请阅读【嵌入式开发学习必备专栏 】


文章目录

    • awk 处理文件名,去除后缀只保留文件名

awk 处理文件名,去除后缀只保留文件名

在 shell 中, 可以使用 awk 来处理文件名,去除其后缀。下面是一个示例命令,它会将带有后缀的文件名作为输入,并输出没有后缀的文件名:

filename="example.txt"
basename=$(echo "$filename" | awk -F"." '{OFS="."; $NF=""; sub(/\.$/, "", $0); print}')
echo "$basename"

这个命令片段做了以下几件事情:

  1. -F"." 设置了输入字段的分隔符为点号(.),这是文件后缀的通常分隔符。
  2. OFS="." 设置了输出字段的分隔符也为点号。
  3. $NF="" 将最后一个字段(即文件的后缀)设置为空字符串。
  4. sub(/\.$/, "", $0) 使用正则表达式匹配行末尾的点号并将其删除。
  5. print 输出处理后的行,即没有后缀的文件名。
    这将输出 example(去掉了 .txt 后缀)。
    另一种更简单的方法是使用 revcut 命令组合,这可能更容易理解,而且不需要 awk
filename="example.txt"
basename=$(echo "$filename" | rev | cut -d"." -f2- | rev)
echo "$basename"

这个命令的工作原理是:

  1. 使用 rev 命令反转文件名字符串。
  2. 使用 cut 命令以点号为分隔符,选取反转后的第二个字段到最后(即除去了第一个字段,也就是原始字符串的后缀部分)。
  3. 再次使用 rev 命令反转结果回到正常的顺序。
    例如,对于文件名 example.txt,这也会输出 example
    请注意,如果文件名中有多个点号,以上方法会去掉最后一个点号及其之后的部分。如果文件名中有版本号或多个后缀,可能需要其他方法来处理。
awk -F "\"" '{print$2}' auto_generate.h | awk -F"." '{OFS="."; $NF=""; sub(/\.$/, "", $0); print}'
http://www.lryc.cn/news/331080.html

相关文章:

  • Linux重点思考(中)--端口/静态内存/负载/日志
  • 【Go】五、流程控制
  • 数据开发-面试真题。
  • 如何使用免费的ChatGpt3.5
  • Kafka硬核干货
  • 分享几个可以免费使用的GPT网站吧
  • MySQL进阶-----前缀索引、单例与联合索引
  • HTTP——Cookie
  • Scala大数据开发
  • windows无法使用hadoop报错:系统找不到路径
  • 从0配置React
  • File和IO流
  • 2024系统架构师---解释器架构风格的概念与应用
  • makefile01
  • 计算机视觉之三维重建(6)---多视图几何(上)
  • 蓝桥杯:全球变暖(python,BFS,DFS)(栈溢出的处理办法)
  • Qt C++ | Qt 元对象系统、信号和槽及事件(第一集)
  • Python 抽象类
  • 达梦数据库自动备份(全库)+还原(全库) 控制台
  • android AndroidAutoSize 取消第三方库适配问题(两个步骤)
  • 【Java 多线程】从源码出发,剖析Threadlocal的数据结构
  • Sy6 编辑器vi的应用(+shell脚本3例子)
  • 把标注数据导入到知识图谱
  • 【前端基础】什么是类数组对象,类数组对象转换成数组的方法
  • Python快速入门系列-8(Python数据分析与可视化)
  • 双非硕转测试之Java学习笔记(一):集合
  • zabbix源码安装
  • 计算机视觉之三维重建(5)---双目立体视觉
  • 计算机网络-TCP/IP 网络模型
  • 算法训练营第29天|LeetCode 491.递增子序列 46.全排列 47.全排列Ⅱ