需要对以下文件使用 cut 命令

需要对以下文件使用 cut 命令
ff_rms_mark_head_gp_20221019569987.dat.gz
ff_rms_sharp_head_20221019569987_full.dat.gz

这里有两种类型的文件。一是full,多一是gp,这就是区别。但是,在这种情况下,我需要使用 cut 命令来获取以下详细信息

....

输出:`` Table_Name 应该是:“第一个文件的 mark_head

第二个表应该是“sharp_head”

“两个表之间的差异是“gp”和“full””。表名可能会减少或增加

日期:2022年10月19日


`Table Name` would start from `rms_` till `gp` but if there is no `gp` then till `date`)

The date would be with the following format:

```python
date=2022-10-19

答案1

这是你想要的吗?

确保你被放置在你有 * 的目录中.gz 文件在运行此脚本之前:

#!/bin/bash

for file in ./*.gz; do
   
   echo -e "=========================================="
   echo Current file "$file"

   fhead=$(cut -d '_' -f3,4 <<< "$file")
   sixthCol=$(cut -d '_' -f6 <<< "$file")

   if [[ ${sixthCol%%.*} = "full" ]];then
      #Table name till date
      fdate=$(cut -d '_' -f5 <<< "$file" | awk -v FS='' -v OFS='-' '{print $1$2$3$4,$5$6,$7$8}')
      tableName="$(cut -d '_' -f2-4 <<< "$file")_${fdate}"
   else
      #Table name till gp
      fdate=$(cut -d '_' -f6 <<< "$file" | awk -v FS='' -v OFS='-' '{print $1$2$3$4,$5$6,$7$8}')
      tableName=$(cut -d '_' -f2-5 <<< "$file")
   fi

   echo Table_Name: $tableName
   echo Head: $fhead
   echo Date: $fdate
   echo -e "==========================================\n\n"
done

假设您有这些文件:

ff_rms_mark_head_gp_20221019569987.dat.gz
ff_rms_sharp_head_20221019569987_full.dat.gz

如果运行上面的脚本,您将得到以下输出:

==========================================
Current file ./ff_rms_mark_head_gp_20221019569987.dat.gz
Table_Name: rms_mark_head_gp
Head: mark_head
Date: 2022-10-19
==========================================


==========================================
Current file ./ff_rms_sharp_head_20221019569987_full.dat.gz
Table_Name: rms_sharp_head_2022-10-19
Head: sharp_head
Date: 2022-10-19
==========================================

可能Head并不重要(Date或许还有 )。如果您想要任何其他特定输出,那么您应该提供有关您真正想要的内容的详细信息。
关于脚本,它适用于任意数量的.gz 文件(两者gp任一full)。

相关内容