AWK:用户输入文本文件

时间:2013-10-30 15:23:43

标签: awk user-input

有没有办法用纯AWK语言请求用户输入?

我想创建一个程序,在运行时,使用:“awk -f my.awk”执行以下操作:

  1. 打印“输入文件名:”

  2. 获取输入,打开文件,每行打印亚麻和线条内容。

  3. 我可以使用“awk -f my.awk text.txt”在没有用户输入的情况下实现此目的。 如果my.awk包含:

    {print NR, $n}
    

    或直接使用以下方式在终端中运行:

    awk '{print NR, $n}' text.txt
    

    我知道这是一个非常愚蠢的问题,但我找不到任何关于此的信息。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

  

有没有办法用纯AWK语言请求用户输入?

简而言之,使用纯awk无法做到这一点。

我可能会写一个简短的包装脚本,如:

#!/bin/bash

echo "Enter filename:"
read filename

awk -f my.awk "$filename"

或者选择其他脚本语言,例如pythonperl

答案 1 :(得分:2)

是的,你可以。用gawk测试:

awk '
    BEGIN {
        printf "enter filename: "
        getline < "-"
        ARGV[1] = $0
        ARGC = 2
    }
    {print NR, $0}
'

参考:http://www.gnu.org/software/gawk/manual/html_node/ARGC-and-ARGV.html

相关问题