특정 텍스트를 가져오려면 sed 명령을 사용하는 데 도움을 주세요.

특정 텍스트를 가져오려면 sed 명령을 사용하는 데 도움을 주세요.

작업을 생성한 JIRA에 대한 API 호출의 출력인 txt 파일이 있습니다.

이 파일에는 다음 텍스트가 있습니다(질문 번호는 변경 가능).

"key":"JIRA-90"

JIRA-90을 구해야 하는데 sed를 사용하여 이를 수행하는 방법을 알 수 없는 것 같습니다.

JIRA-90은 물론 JIRA의 이슈 유형이므로 변경될 수 있습니다.

답변1

sed -n 's/.*"key":"\([^"]*\)".*/\1/p' < your-file

일반적인 관용구를 사용합니다. 대체를 sed -n 's/pattern/replacement/p수행 하고 성공할 경우에만 결과 패턴 공간을 인쇄합니다( 각 사이클의 끝에서 패턴 공간을 인쇄하지 않고 인쇄하는 대신 ).spn-n

답변2

입력 파일에 이름/값 쌍이 2개 이상 포함되어 있다고 가정하면 다음을 고려하세요.

$ awk -F'":"' '{gsub(/^[[:space:]]*"|"[[:space:]]*$/,""); f[$1]=$2} END{print f["key"]}' file
JIRA-90

이 접근 방식을 사용하면 이름-값 매핑으로 배열( f[]위)을 채운 다음 언제든지 이름별로 값을 인쇄할 수 있습니다.

$ cat file
        "foo":"127"
        "key":"JIRA-90"
        "bar":"hello world"

$ awk -F'":"' '{gsub(/^[[:space:]]*"|"[[:space:]]*$/,""); f[$1]=$2} END{print f["bar"], f["key"]}' file
hello world JIRA-90

$ awk -F'":"' '{gsub(/^[[:space:]]*"|"[[:space:]]*$/,""); f[$1]=$2} END{print f["foo"] * 3}' file
381

$ awk -F'":"' '{gsub(/^[[:space:]]*"|"[[:space:]]*$/,""); f[$1]=$2} END{for (i in f) print i "=" f[i]}' file
key=JIRA-90
foo=127
bar=hello world

관련 정보