AWK:用户输入文本文件

AWK:用户输入文本文件,awk,user-input,Awk,User Input,有没有办法用纯AWK语言请求用户输入 我想创建一个程序,在运行时使用:“awk-f my.awk”执行以下操作: 打印“输入文件名:” 获取输入,打开文件,并为每行打印行号和行内容 我可以使用“awk-f my.awk text.txt”实现这一点,而无需用户输入。 如果my.awk包含: {print NR, $n} 或者直接在终端中运行,使用: awk '{print NR, $n}' text.txt 我知道这是一个非常愚蠢的问题,但我找不到任何关于这方面的信息。 提前谢谢 有没有办法

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

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

  • 打印“输入文件名:”

  • 获取输入,打开文件,并为每行打印行号和行内容

  • 我可以使用“awk-f my.awk text.txt”实现这一点,而无需用户输入。 如果my.awk包含:

    {print NR, $n}
    
    或者直接在终端中运行,使用:

    awk '{print NR, $n}' text.txt
    
    我知道这是一个非常愚蠢的问题,但我找不到任何关于这方面的信息。 提前谢谢

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

    简言之,这不能用纯
    awk
    实现

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

    #!/bin/bash
    
    echo "Enter filename:"
    read filename
    
    awk -f my.awk "$filename"
    
    或者选择另一种脚本语言,如
    python
    perl

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

    简言之,这不能用纯
    awk
    实现

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

    #!/bin/bash
    
    echo "Enter filename:"
    read filename
    
    awk -f my.awk "$filename"
    

    或者选择另一种脚本语言,如
    python
    perl

    是的,您可以。用呆呆的眼神测试:

    awk '
        BEGIN {
            printf "enter filename: "
            getline < "-"
            ARGV[1] = $0
            ARGC = 2
        }
        {print NR, $0}
    '
    
    awk'
    开始{
    printf“输入文件名:”
    getline<“-”
    ARGV[1]=0美元
    ARGC=2
    }
    {打印编号,$0}
    '
    

    参考:是的,你可以。用呆呆的眼神测试:

    awk '
        BEGIN {
            printf "enter filename: "
            getline < "-"
            ARGV[1] = $0
            ARGC = 2
        }
        {print NR, $0}
    '
    
    awk'
    开始{
    printf“输入文件名:”
    getline<“-”
    ARGV[1]=0美元
    ARGC=2
    }
    {打印编号,$0}
    '
    

    ref:

    要给
    awk
    一个bash变量,请使用
    awk-v awk\u var=$bash\u var'BEGIN{print awk\u var}'
    。我不知道如何设置文件名。要打印带有行号的文件:
    cat-n file
    要给
    awk
    一个bash变量,请使用
    awk-v awk\u var=$bash\u var'BEGIN{print awk\u var}'
    。我不知道如何设置文件名。要打印带有行号的文件:
    cat-n file