string - 如何提取字符串中第一个下划线之前的所有内容?
问题描述
我有这样命名的文件:
MG-AB-110_S101_R2_001.fastq.gz, MG-AB-109_S100_R1_001.fastq.gz...
我试图提取第一个下划线之前的所有内容,以便得到:MG-AB-110,MG-AB-109 ...
我试图这样做:
name="MG-AB-110_S101_R2_001.fastq.gz"
base_name=${name%%.*}
echo $base_name
MG-AB-110_S101_R2_001
和这个:
base_name=${name%%(.*?)_.* }
echo $base_name
MG-AB-110_S101_R2_001.fastq.gz
我需要这些基本名称来匹配另一个文件夹中的基本名称,所以上面的正则表达式将成为这个循环的一部分:
#!/bin/bash
for name in test1/*.gz; do
base_name=${name%%.*}
if [ -f "test2/$base_name" ]; then
cat "$name" "test2/$base_name" >"all_combined/$base_name"
else
printf 'No file in test2 corresponds to "%s"\n' "$name" >&2
fi
done
解决方案
推荐阅读
- c# - c# 运算符 '??' 并作为'
- python - 从两个列表创建最小组
- uno-platform - 向情节提要添加重复行为和持续时间时出现 Wasm 异常
- java - Spring MVC 无法显示静态资源
- python-3.x - Pip 在 windows 的 cmd 中不被识别为外部命令
- excel - 返回列中第一个非空单元格中的值直接向左并向上
- azure-data-factory - 在 Azure 数据工厂中,如何在 Web UI 中创建由参数、字符串文字和函数组成的字符串表达式
- csv - 如何使用 sed 将列添加到 csv
- payment-gateway - 使用 ssl_recurring_flag 融合付款不起作用
- python - 无法在真实主机上使用 pyttsx3