bash - 在文本文件的第一行之前插入文件名 - 文件扩展名
问题描述
~$ awk -i inplace -v ORS='\r\n' 'FNR==1{print FILENAME}1' *
这很好用。
但我想排除文件扩展名。
.... sub(/\.[^.]+$/, "", FILENAME) ...
我不知道如何混合它。还是有其他方法?
我应该如何解决它?
解决方案
第一个解决方案(不使用新变量并编辑 FILENAME 变量本身):您能否根据您显示的示例尝试以下操作。我建议在单个文件上运行该程序一次,然后在所有文件上运行,因为您正在进行就地更新,一旦您对该文件的更新感到满意,然后在所有文件上运行您的命令。
awk -i inplace -v ORS='\r\n' 'FNR==1{sub(/\.[^.]+$/,"",FILENAME);print FILENAME}1' Input_file
或者
awk -i inplace -v ORS='\r\n' '
FNR==1{
match(FILENAME,/.*\./)
print substr(FILENAME,RSTART,RLENGTH-1)
}
1' Input_file
第二种解决方案(为 FILENAME 使用变量,如果需要,我们可以稍后使用文件名):或者不要更改FILENAME
默认变量,而是创建一个包含其文件名的临时变量,以便我们以后需要使用文件名我们可以使用它的程序,尝试如下:
awk -i inplace -v ORS='\r\n' '
FNR==1{
file=FILENAME
sub(/\.[^.]+$/,"",file)
print file
}
1' Input_file
或者我们也可以使用match
如下函数:
awk -i inplace -v ORS='\r\n' '
FNR==1{
file=FILENAME
match(file,/.*\./)
print substr(file,RSTART,RLENGTH-1)
}
1' Input_file
注意:更改Input_file
为*
或您的文件扩展名以将其传递给您的awk
程序。
推荐阅读
- python - 相关模型 Django 的随机默认值
- python - 找到从顶部(或任意索引)开始的字典的*有序*交集的有效方法?
- ajax - Spring Validator + Ajax 显示 bindingResultErrors
- snowflake-cloud-data-platform - 如何在雪花中使用 parse_xml 忽略损坏的 xml 行
- watson-studio - 在 Watson Studio 中使用变量查询 Bigquery
- git - 有没有一种简单的方法可以在 git 中压缩许多提交?
- devops - 如果有凭证助手,Nomad 无法提取其他图像
- javascript - 如何在反应中使用错误边界?
- swift - 如何在另一个视图中更改类的布尔实例?
- snowflake-cloud-data-platform - 数据市场 - 启用“获取数据”按钮