首页 > 解决方案 > grep, awk - 每隔第一行输出一次

问题描述

我有数千个不同大小的图像链接。每个第一个链接都有最大的图像大小。它们看起来像这样:

https://userapi.com/c84472122/v844721232/143ffc/4Sgsfsf-EyA.jpg
https://userapi.com/c84472122/v844721232/143ffb/IdLDJU4usI8.jpg
https://userapi.com/c84612122/v846121642/13684b/jq5FRWnwzIY.jpg
https://userapi.com/c84612122/v846121642/13684a/wmKy022Qaik.jpg
https://userapi.com/c84612122/v846121642/136849/IZQrSossuMw.jpg
https://userapi.com/c85043622/v850436595/4df71/7y7qHUotpuI.jpg
https://userapi.com/c85043622/v850436595/4df70/nowGp0MVeO0.jpg
https://userapi.com/c85043622/v850436595/4df6f/HnkYnd2WQ_s.jpg
https://userapi.com/c84913622/v849136355/bd12b/sqyYycXM9ug.jpg
https://userapi.com/c84913622/v849136355/bd12a/7uqIIMykk50.jpg
https://userapi.com/c84913622/v849136355/bd129/f_XDzdpgH_g.jpg
https://userapi.com/c85003222/v850032096/b93df/xkQGlX6d6Ek.jpg
https://userapi.com/c85003222/v850032096/b93de/CWhHXRm99Lw.jpg
https://userapi.com/c85003222/v850032096/b93dd/RxBudOclDo0.jpg

所以,我不需要最大的图像。我只需要留下每个第一个链接。我怎样才能做到这一点?

我试过了:

grep -m 1 “c84472122\c84612122\c85043622\c84913622\c85003222” file.txt

但是我给了一个错误

标签: awkgrep

解决方案


当分隔符为 <forward-slash> 时,图像位于第 4 和第 5 字段引用中。以下行比较这些字段并打印其中一个是否不同。

$ awk -F/ '($4!=a || $5!=b) { print; a=$4; b=$5 }' file

这输出:

https://userapi.com/c84472122/v844721232/143ffc/4Sgsfsf-EyA.jpg
https://userapi.com/c84612122/v846121642/13684b/jq5FRWnwzIY.jpg
https://userapi.com/c85043622/v850436595/4df71/7y7qHUotpuI.jpg
https://userapi.com/c84913622/v849136355/bd12b/sqyYycXM9ug.jpg
https://userapi.com/c85003222/v850032096/b93df/xkQGlX6d6Ek.jpg

推荐阅读