쉘 스크립트를 사용하여 사용자 입력을 기반으로 데이터 추출

쉘 스크립트를 사용하여 사용자 입력을 기반으로 데이터 추출
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/newold사용. . . 교체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"

~에 귀속됨@테덴나를 찾으려고이 페이지- 우리는 ls -t | head -n 1그것이 작동하지 않을 것이라는 것을 알고 있기 때문에

답변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.

관련 정보