我每天早上从我的一位工程师那里收到一个.txt文件,其中包含以下信息:
/
我们有一个运行的脚本,可以通过提供指定的source-group或dest-group向我们返回类似于以下的信息:
"New York"|NYC|network-details source-group NYC-srcIP dest-group NYC-destIP
"San Francisco"|SF|network-details source-group SF-srcIP dest-group SF-destIP
我遇到的主要问题是要处理大量数据并解析.txt文件中的字符串,因此我可以运行脚本并将其附加到2个不同的文件中,以获取源组和目标-所有这些位置的组。
但是.txt具有多个定界符。本质上,我只想要源组值(例如:NYC-srcIP)和目标组值(例如:NYC-destIP)。
有没有一种简便的方法可以在bash中做到这一点?最好是pythonic,在哪里可以获取.txt文件中每一行的source-group和dest-group之后的第一个以空格分隔的子字符串?
答案 0 :(得分:0)
基本剪切/ awk应该足以满足此要求,例如:
cat ex.txt | sed 's/".*"//' | awk '{print $3,$5}'
或
cat ex.txt | sed 's/".*"//' | cut -d' ' -f3,5
sed
有助于消除双引号中的第一部分,双引号中可能包含空格,如注释中所指出。
答案 1 :(得分:0)
bash版本:
pattern="source-group ([^[:space:]]+) dest-group ([^[:space:]]+)"
while read line; do
if [[ $line =~ $pattern ]]; then
echo ${BASH_REMATCH[1]} ${BASH_REMATCH[2]}
fi
done
bash test.sh <输入