작업을 생성한 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
수행 하고 성공할 경우에만 결과 패턴 공간을 인쇄합니다( 각 사이클의 끝에서 패턴 공간을 인쇄하지 않고 인쇄하는 대신 ).s
p
n
-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