1

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

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

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

  2. 接受输入,打开文件并为每一行打印行号和行内容。

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

{print NR, $n}

或者直接在终端中运行它:

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

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

4

2 回答 2

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

于 2013-10-30T15:53:51.907 回答
2

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

总之没有这不能用纯awk的。

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

#!/bin/bash

echo "Enter filename:"
read filename

awk -f my.awk "$filename"

或者选择另一种脚本语言,例如pythonperl

于 2013-10-30T15:37:33.233 回答