You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用awk查找文本文件中指定单词的位置?

问题原因

你的脚本无输出是因为awk脚本里的shell变量引用方式错误:原脚本中if($i == '$word')用单引号包裹了$word,shell在解析时不会替换单引号内的变量,导致awk实际是在比较每个字段是否等于字符串$word,而非你输入的目标单词(比如"Tarun"),所以匹配不到结果。

修正方案

这里提供两种可靠的修正方式:

方式一:用awk的-v选项传递变量(推荐)

这种方式能安全处理包含空格或特殊字符的单词,是最佳实践:

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

方式二:用双引号包裹awk脚本并转义内部变量

如果坚持用shell变量拼接的方式,需要用双引号包裹整个awk脚本,同时转义awk自身的变量(比如$i要写成\$i),避免被shell解析:

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

当你输入"Tarun"后,两种方式都会输出:

Row: 2 Column: 1

内容的提问来源于stack exchange,提问作者MHmmm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:30:38