tempfile中的内容
123 sam moore IT_Team
235 Rob Xavir Management
我要做的是从用户那里获取输入并在tempfile中搜索它,搜索输出应该给出列号
我的代码
#!/bin/bash
set -x;
read -p "Enter :" sword6;
awk 'BEGIN{IGNORECASE = 1 }
{
for(i=1;i<=NF;i++) {
if( $i ~ "'$sword6'$" )
print i;
}
} ' /root/scripts/pscripts/tempprint.txt;
这正是列号
输出
Enter : sam
2
我需要的是i变量的值应该分配给bash变量,以便我可以根据脚本中的需要调用。
任何帮助都受到高度赞赏。
我搜索找到任何现有的答案,但无法找到任何答案。如果有任何让我知道的话。
答案 0 :(得分:1)
首先,您应该以这种方式将shell变量传递给awk(例如sword6
)
awk -v word="$sword6" '{.. if($i ~ word)...}`...
通过其他命令的输出分配shell变量:
shellVar=$(awk '......')
然后,您可以在脚本中继续使用$shellVar
。
.*
答案 1 :(得分:1)
您只需要捕获awk
的输出。顺便说一句,我会将sword6
作为awk
变量传递,而不是通过字符串插值注入它。
i=$(awk -v w="$sword6" '
BEGIN { IGNORECASE = 1 }
{ for (i=1;i<=NF;i++) {
if ($i ~ w"$") { print i; }
}
}' /root/scripts/pscipts/tempprint.txt)
答案 2 :(得分:1)
以下脚本也可以帮助你。
cat script.ksh
echo "Please enter the user name:"
read var
awk -v val="$var" '{for(i=1;i<=NF;i++){if(tolower($i)==tolower(val)){print i,$i}}}' Input_file
答案 3 :(得分:0)
如果tempprint.txt很大
awk -v w="$word6" '
BEGIN { IGNORECASE = 1 }
"$0 ~ \\<w\\>" {
for(i=1;i<=NF;i++)
if($i==w)print i
}' tempprint.txt