【发布时间】:2023-03-07 16:10:01
【问题描述】:
我试图让用户输入一个值来查看文件中的特定列。有没有一种方法可以使用 awk 来打开列,而不必在所有切换情况下重复自己?
# Code:
read -p 'Enter a column:' input
for i in "$file_name"; do
cat "$i" | awk -v column="$input" '{ print $column }'
done
这里有一个更好的解释:
view_column() {
for i in "$file_name"; do
cat "$i" | awk -v col="$1" '{ print $col }'
done
}
print_menu() {
menu=( 'First' 'Last' 'Email' 'Exit' )
for (( i=0; i<${#menu[@]}; i++ )); do
printf "%2d. %s\n" "$((i+1))" "${menu[$i]}"
done
}
main() {
while true; do
clear
print_menu
read -p 'Enter a choice: ' choice
if (( "$choice" == 4 )); then
break
fi
view_column "$choice"
sleep 1.5
done
}
【问题讨论】:
-
$input应该是数字吗? -
是的,输入代表一个整数。该文件包含四个字段,其中包含名字、姓氏、工作时间、电子邮件。 @hek2mgl
-
那么@Kent的回答应该可以,就像你的例子
-
我在重新编辑时想出了一个解决方案,但我现在不知道如何验证空列。 @hek2mgl
标签: linux bash shell unix scripting