如何从包含xyz的README.txt行中提取对应的emr_000x.sx文件名?
提取包含xyz行中的emr文件名
以下几种bash命令方案可实现需求:
方案一:grep + sed(精准匹配A字段开头的文件名)
grep 'xyz' README.txt | sed -n 's/^A:\(emr_000[0-9]\.sx\),.*/\1/p'
grep 'xyz' README.txt:筛选出所有包含“xyz”的行sed部分:仅提取行首A:后面的emr_000x.sx文件名,^A:确保匹配目标字段的开头,\(emr_000[0-9]\.sx\)捕获需要的文件名,\1引用捕获的内容输出
方案二:awk(基于字段分割提取,更灵活)
awk '/xyz/ {split($0, fields, /[:,]/); print fields[2]}' README.txt
/xyz/:仅处理包含“xyz”的行split($0, fields, /[:,]/):将行内容按冒号或逗号分割为数组,fields[2]对应A字段后的文件名- 直接输出数组中对应的文件名
方案三:双grep(快速提取,适合文件名位置不固定的情况)
grep 'xyz' README.txt | grep -o 'emr_000[0-9]\.sx'
- 第一个
grep过滤出含“xyz”的行 - 第二个
grep用-o参数只输出匹配到的emr_000x.sx字符串([0-9]匹配数字x,\.转义点号避免匹配任意字符)
内容的提问来源于stack exchange,提问作者sk23
相关产品推荐
相关产品推荐

