![행/목록의 패턴을 기준으로 값 추출](https://linux55.com/image/114495/%ED%96%89%2F%EB%AA%A9%EB%A1%9D%EC%9D%98%20%ED%8C%A8%ED%84%B4%EC%9D%84%20%EA%B8%B0%EC%A4%80%EC%9C%BC%EB%A1%9C%20%EA%B0%92%20%EC%B6%94%EC%B6%9C.png)
아래와 같이 json 출력에서 목록을 추출했습니다.
"Rel_70" "Rel_71" "Dev_795" "Dev_796" "Dev_797" "Devtest_10" "Devtest_12"
여기서 Dev_*를 사용하여 값을 추출하고 싶습니다. 즉, "Dev_795" "Dev_796" "Dev_797" 모든 값을 추출하는 데 관심이 있습니다.
답변1
모든 "Dev_[digits]" 항목을 포함하려면 다음을 수행하십시오.
awk 'BEGIN {RS=" "} /Dev_[0-9]+/ {print}' inputfile
또는 구체적으로 "Dev" 항목만 포함하려는 경우:
awk 'BEGIN {RS=" "} /Dev_(795|796|797)/ {print}' inputfile
답변2
tr ' ' '\n' < jsonfile | grep '"Dev_'
perl -lne 'print for /"Dev_\d+"/g' jsonfile
while read -ra A; do for a in "${A[@]}"; do case $a in '"Dev_'* ) echo "$a" ;; esac; done; done < jsonfile
답변3
awk 'ORS=" "{for(i=1;i<=NF;i++){if($i ~ /Dev_/){print $i}}}' filename
산출
"Dev_795" "Dev_796" "Dev_797"