sfeed_update: merge: change the default to use the last record - sfeed - RSS and Atom parser
(HTM) git clone git://git.codemadness.org/sfeed
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit e77e0165d3151ebe763a602adaa486af2467e6df
(DIR) parent 66c4192ad01bc01c65491f30f746cce00a5dab8d
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Sat, 2 Aug 2025 14:06:01 +0200
sfeed_update: merge: change the default to use the last record
In many cases it makes sense to use the last record.
Most implementations using sort -u use a stable sort and use the first record
found by the specified key (where the key are the fields: id, title, link).
This means it kept the record found in the old file and not update the last
content.
Swap the default to use the last record instead of the first.
An alternative in awk:
merge() {
LC_ALL=C awk -F '\t' '!x[$6 "\t" $2 "\t" $3]++' "$3" "$2"
}
Thanks Ivo Cicchese for the feedback!
Diffstat:
M sfeed_update | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
---
(DIR) diff --git a/sfeed_update b/sfeed_update
@@ -79,7 +79,7 @@ filter() {
# merge raw files: unique sort by id, title, link.
# merge(name, oldfile, newfile)
merge() {
- sort -t ' ' -u -k6,6 -k2,2 -k3,3 "$2" "$3" 2>/dev/null
+ sort -t ' ' -u -k6,6 -k2,2 -k3,3 "$3" "$2" 2>/dev/null
}
# order by timestamp (descending).