2

以下に出力が表示されている次のコマンドがありますが、現在の出力を解析し、下の[期待される出力]フィールドに表示されているものだけを出力するawkコマンドを作成する方法はありますか?

ssh -p 29418 company.com gerrit query --commit-message --files --current-patch-set status:open project:platform/vendor/company/radio branch:master |grep refs

現在の出力:-

ref: refs/changes/26/206026/1
ref: refs/changes/25/206025/1
ref: refs/changes/22/206022/1

必要な出力:-

206026
206025
206022
4

4 に答える 4

3

awkの使用:

awk -F'/' '{print $(NF-1)}' input

もう1つは、grepを削除して、awkを直接使用できることです。

ssh -p 29418 company.com gerrit query     \
          --commit-message --files        \
          --current-patch-set status:open \
          project:platform/vendor/company/radio branch:master |
    awk -F'/' '/refs/ {print $(NF-1)}'
于 2012-12-28T03:16:36.493 に答える
2

私はあなたが尋ねたことを知っていますがawk、多分あなたはそれを試すことができますcut

cut -f4 -d"/"
于 2012-12-28T03:13:15.150 に答える
1

または、単に使用するのはどうですかgrep

$ ... | grep -Po '(?<=ref: refs/changes/[0-9]{2}/)[0-9]+'
206026
206025
206022
于 2012-12-28T14:11:18.840 に答える
0
grep search_string /directory/filename | cut -f1 -d':'

ファイルのディレクトリからの検索文字列のgrep(つまり、cファイルのリストの場合は* .c)。

grep include */*.c---キーワード「include」を含むすべてのサブディレクトリからcファイルのリストを返すことに加えて。このコマンド出力には、検索文字列が配置されている行全体も含まれます。

たとえば、./tmp/readline-6.2:# include < stdlib.h>これはgrepコマンドから出力されます。それぞれが「include」キーワードを含む複数行の出力がある場合があります。

この出力からファイル名だけを取得するには:

grep include /.c | cut -f1 -d':'
于 2015-08-18T20:10:12.493 に答える