Получить только последний матч из grep и дамп в файле - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть следующая команда:
grep -Rl -e '^\s\s"status" : "failed"' -e '^\s\s"status" : "broken"' | xargs grep '\.png",$'

команда возвращает это:

16c739694364ec84.json:        "source" : "a77b00b33055098d.png",
16c739694364ec84.json:        "source" : "282eb13faf790c0b.png",
26d937b0dcfc748a.json:        "source" : "8af0cf9b9a3dad20.png",
26d937b0dcfc748a.json:        "source" : "d9a2b6cefa94f257.png",
3ac10f00de722ec8.json:            "source" : "94f1916860cb1610.png",
3ac10f00de722ec8.json:          "source" : "386f5bbd0d5831d0.png",
3ac10f00de722ec8.json:        "source" : "1aba5c856edf35c3.png",
3ac10f00de722ec8.json:        "source" : "feab31f43a51a038.png",
62340894812a7106.json:        "source" : "768cf3927206f24a.png",
62340894812a7106.json:        "source" : "94e0308263a3c1d.png",
72eacc757480542f.json:        "source" : "ef3bae66ed0ba8ba.png",

Как я могу получить только последний * .png от каждого * .jsonвернулся и добавил в файл?

Ожидаемое содержимое файла:

282eb13faf790c0b.png
d9a2b6cefa94f257.png
feab31f43a51a038.png
94e0308263a3c1d.png
ef3bae66ed0ba8ba.png

Примечание *: Я планирую использовать выходной файл в качестве списка исключений для команды rsync.

1 Ответ

0 голосов
/ 04 ноября 2019

Добавить к вашей команде cut и tr :

grep -Rl -e '^\s\s"status" : "failed"' \
    -e '^\s\s"status" : "broken"' \
    | xargs grep '\.png",$' \
    | cut -d':' -f3 \          # split result for 3 columns and get third one
    | tr -d ' ",' \            # trim space and '"' ',' chars
    | > rsync-excludes         # save results into file
...