特定のテキストをインポートするには、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

関連情報