eid|location|desg|status
001|india|hr|active
002|delhi|marketing|inactive
003|hyderabad|sales|active
004|Bangalore|admin|inactive
数据格式如上,分隔符为“|”提示应询问 eid 并显示状态为活动或非活动。
please enter eid: 001
status is : active
答案1
你可以使用read
和sed
read -p "enter an eid: "; sed -n "/$REPLY/ s/.*|\(.*\)/status: \1/p" file
笔记
/$REPLY/
查找包含用户输入的行-n
只打印我们要求的行s/old/new
old
用。。。来代替new
|\(.*\)
保存最后一个字符之后的所有字符|
以供稍后参考\1
p
打印修改后的行
查询最新文件:
#!/bin/bash
for f in *; do
if [[ "$f" -nt "$newest" ]]; then
"$f"="$newest"
fi
done
read -p "enter an eid: "
sed -n "/$REPLY/ s/.*|\(.*\)/status: \1/p" "$newest"
答案2
这会进行解析sh
:
printf 'Enter eid: ' >&2
read query
while IFS="|" read eid location desg status; do
if [ "$eid" = "$query" ]; then
printf 'Status is "%s"\n' "$status"
break
fi
done <data.in
这是假设您的数据文件名为data.in
.