Linux:从filename获取特定字段

时间:2017-10-27 11:32:05

标签: linux bash

我目前正在学习linux bash脚本:

我在文件夹中有文件,文件名为:

ABC01_-12ab_STRINGONE_logicMatches.txt
DEF02_-12ab_STRINGTWO_logicMatches.txt
JKL03_-12ab_STRINGTHREE_logicMatches.txt

我想将STRINGONE,STRINGTWO和STRINGTHREE提取为列表。要看,如果我的想法有效,我想首先回应我的结果。

我的bash脚本代码(在文件所在的文件夹中执行):

#!/bin/bash
for element in 'folder' do out='cut -d "_" -f2 $element | echo $out' done

实际结果:

error: unexpected end of file

期望的结果:

STRINGONE
STRINGTWO
STRINGTHREE
(echoed in bash)

1 个答案:

答案 0 :(得分:2)

你正在做的想法是正确的。但是文件globbing(查找文本文件)和命令替换(运行cut命令)的语法是错误的。你需要做

for file in folder/*.txt; 
    # This condition handles the loop exit if no .txt files are found, and
    # not throw errors
    [ -f "$file" ] || continue
    # The command-substitution syntax $(..) runs the command and returns the
    # result out to the variable 'out'
    out=$(cut -d "_" -f3 <<< "$file")
    echo "$out"
done