我正在尝试读取以表格格式输出的文件。我能够从 aws 区域读取具有 Volume description、snapshotId 和 TimeStarted 列表的文件。我要求用户输入卷名并输出输入的卷的快照 ID。该列表包含volumes0 到volumes30。
问题是,当用户输入Volume0时,它会正确输出snapshotId,但如果用户输入Volume20,它只会输出|。我的猜测是因为正在读取的原始文件是表格格式,它正在这样做。最初我虽然可以设置一个条件,如果用户输入 Volume0,则打印 snapshotId,否则如果用户输入 Volume20,则打印快照 ID。
我正在寻找一种更好的方法来做到这一点。读取文件时如何忽略表格格式,是否应该将其转换为文本格式?如何?或者在阅读时如何忽略任何格式?这是我的 bash 脚本:
readoutput() {
echo "Hello, please tell me what Volume you are searching for..(Volume?):"
read volSearch
echo "Searching for newest SnapshotIds from /Users/User/Downloads/GetSnapId for:" $volSearch
sleep 5
input="/Users/User/Downloads/GetSnapId"
if x=$(grep -m 1 "$volSearch" "$input")
then
echo "$x"
else
echo "$volSearch not found..ending search"
fi
extractSnap=$(echo "$x" | grep "snap-" | awk '{print $7}')
echo $extractSnap
}
readoutput
awk 不太聪明的问题,并尝试自动确定表分隔符。在 Volume0 的第一行中,您在垂直线之前有空间,因此空间和垂直线都是分隔符,但在下一行,您没有空间,因此需要错误的列。接下来试试:
extractSnap=$(echo "$x" | cut -d'|' -f3 | cut -d'-' -f 2)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句