ジョブを生成した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