shell 如何使用awk查找txt文件中特定单词的位置?[duplicate]

d7v8vwbk  于 2022-12-13  发布在  Shell
关注(0)|答案(1)|浏览(152)

此问题在此处已有答案

How do I use shell variables in an awk script?(9个答案)
18小时前关门了。
我需要找到某个单词在文本文件中的位置,我试着做这样的事情,但它没有工作(没有任何输出):例如,txt文件包含:

A    B    C
Tarun    A12    1
Man    B6    2
Praveen    M42    3

因此,我需要找到一个单词,,Tarun”的位置,输出应为:行:2列1但没有输出

read -p "Write a word: " word
   awk '{ 
    for(i=1;i<=NF;i++)
        if($i == '$word')
            print "Row: " NR, "Column: " i 
}' file.txt
mbyulnm0

mbyulnm01#

原始代码中唯一的问题是错误地将变量word从bash传递到awk。
按照预先存在的问题How do I use shell variables in an awk script?的答案所教导的那样使用awk -v var="value"来修复这个问题,代码按预期工作:

#!/usr/bin/env bash

word='Tarun'

# using this instead of a file so we can run in sandboxes without write support
getInput() { cat <<'EOF'
A    B    C
Tarun    A12    1
Man    B6    2
Praveen    M42    3
EOF
}

awk -v word="$word" '{ 
    for(i=1;i<=NF;i++)
        if($i == word)
            print "Row: " NR, "Column: " i 
}' <(getInput)

正确发射:

Row: 2 Column: 1

相关问题