我目前正在学习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)
答案 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