[問題] shell找文件內字串重複的數量

看板Linux作者 (慢慢習慣成為大叔)時間5年前 (2019/05/01 13:14), 編輯推噓7(708)
留言15則, 4人參與, 5年前最新討論串1/1
請問一下 我有一個檔案 裡面會紀錄一堆內容 格式是 開始時間|結束時間|事件|內容|狀態 正常情況下 同一個開始時間會有兩筆資料 請問我該如何列出某事件 開始時間只有一筆資料的 grep XXXXX 檔案名稱 > text.txt uniq -u text.txt 不過這樣只能用行去比 請問我該如何只比該行的某幾個位字呢? 請各位大神給我一個方向即可 不知要用什麼關鍵字去查 例如 檔案 2019-05-01-14.22.11|2019-05-01-14.22.11|XXXXX|內容 XXXXXIYOWUW穿插的無用資訊 2019-05-01-14.23.01|2019-05-01-14.23.01|XXXXX|內容 SDWSW無用資訊 2019-05-01-14.22.11|2019-05-01-14.23.03|XXXXX|內容 TTTT無用資訊 我只想列出 2019-05-01-14.23.01|2019-05-01-14.23.01|XXXXX|內容 這筆資料 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.184.75 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1556687661.A.158.html

05/01 14:08, 5年前 , 1F
看不懂你的例如, 跟你說的 "只有一筆資料" 有啥關聯
05/01 14:08, 1F

05/01 14:10, 5年前 , 2F
喔... 看懂了...
05/01 14:10, 2F

05/01 14:25, 5年前 , 3F
uniq 好像只能忽略前面的 n fields or n chars
05/01 14:25, 3F

05/01 14:26, 5年前 , 4F
cat filename |sort|awk -F\| '{count[$1]++;if(str!=
05/01 14:26, 4F

05/01 14:26, 5年前 , 5F
""&&str!=$1&&count[str]<2){print line};str=$1;line
05/01 14:26, 5F

05/01 14:27, 5年前 , 6F
=$0}END{if(count[str]<2){print line}}'
05/01 14:27, 6F

05/01 14:27, 5年前 , 7F
用 awk 硬湊...
05/01 14:27, 7F

05/01 22:52, 5年前 , 8F
uniq 可以用 -w 只比對前 n 個字元
05/01 22:52, 8F

05/01 22:54, 5年前 , 9F
sort 檔案名稱 | uniq --check-chars=19 --unique
05/01 22:54, 9F

05/02 00:19, 5年前 , 10F
原來是 macOS 的 uniq 沒有 -w ... 才在想好像用過,
05/02 00:19, 10F

05/02 00:19, 5年前 , 11F
但是 man 不到@@
05/02 00:19, 11F

05/02 00:59, 5年前 , 12F
似乎要用 GNU coreutils 版本的 uniq 才有 -w
05/02 00:59, 12F

05/02 01:01, 5年前 , 13F
所以 Mac 或 BSD-like 的平臺需要的話可能要自行找套件
05/02 01:01, 13F

05/02 01:15, 5年前 , 14F
QQ
05/02 01:15, 14F

05/03 00:04, 5年前 , 15F
我的看起來不能用 -w 感覺大大們的資訊 謝謝
05/03 00:04, 15F
文章代碼(AID): #1SoIij5O (Linux)