![|로 구분된 단어가 있는 파일에서 {9로 시작하는} 줄의 두 번째 및 세 번째 단어를 추출하는 방법은 무엇입니까? [폐쇄]](https://linux55.com/image/85402/%7C%EB%A1%9C%20%EA%B5%AC%EB%B6%84%EB%90%9C%20%EB%8B%A8%EC%96%B4%EA%B0%80%20%EC%9E%88%EB%8A%94%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%7B9%EB%A1%9C%20%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94%7D%20%EC%A4%84%EC%9D%98%20%EB%91%90%20%EB%B2%88%EC%A7%B8%20%EB%B0%8F%20%EC%84%B8%20%EB%B2%88%EC%A7%B8%20%EB%8B%A8%EC%96%B4%EB%A5%BC%20%EC%B6%94%EC%B6%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
case "$3" in
-id)
echo "Lines matches with the pattern $4 :"
#grep -oP $4 $2
;;
esac
답변1
다음 awk 명령을 시도해 볼 수 있습니다.
awk -F"|" '$2 ~ /^9/ && $3 ~ /^9/ { print $2,$3 }' filename
출력에는 두 번째 단어와 세 번째 단어 사이에 공백이 포함되어 있지만 필요에 따라 OFS를 사용하여 이를 설정할 수 있습니다.
편집하다:
귀하의 프로그램은 다음과 같습니다:
case "$3" in
-id)
echo "Lines matches with the pattern $4 :"
filename=$2
id=$4
echo "`grep "^$id" $filename | awk -F"|" -v ID="$id" '$1==ID'|awk -F "|" '{print $2,$3,$5}'`"
;;
esac