linux - 使用 awk 输入列

标签 linux bash shell unix scripting

我试图让用户输入一个值来查看文件中的特定列。有没有一种方法可以使用 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
}

最佳答案

我不能 100% 确定我正确理解您的要求,这对您有用吗?

read -p 'Enter a column:' input
awk -v column="$input" '{ print $column }' $filename

关于linux - 使用 awk 输入列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17797676/

相关文章:

c++ - 这个开关 block 是如何执行的?

c - 控制台中的全宽进度条

bash - 在 Bash 中如何检查一个变量是否至少包含一个字母字符?

linux - 在 Linux 中拆分平面文件并添加分隔符

bash - Shell 脚本退出代码 - 无法设置

linux - 如何找到未修改的文件 linux

linux - 如何安全地将 apache 版本降级到不适合当前 gnome 状态的版本?

bash - 带有参数扩展的 Shell 通配符

linux - 获取 git 修订之间删除的文件

perl - bash 管道中的第一个程序正在阻塞