Suk*_*tto 4 bash scripting command-line cygwin
我有一个逗号分隔文件"myfile.csv",其中第5列是日期/时间戳.(mm/dd/yyyy hh:mm).我需要列出包含重复日期的所有行(有很多)
我正在通过cygwin为WinXP使用bash shell
$ cut -d, -f 5 myfile.csv | sort | uniq -d
Run Code Online (Sandbox Code Playgroud)
正确返回重复日期的列表
01/01/2005 00:22
01/01/2005 00:37
[snip]
02/29/2009 23:54
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何将这个提供给grep给我所有的行.显然,我不能xargs直接使用,因为输出包含空格.我认为我可以这样做,uniq -z -d但由于某种原因,组合这些标志会导致uniq(显然)没有返回任何内容.
所以,鉴于此
$ cut -d, -f 5 myfile.csv | sort | uniq -d -z | xargs -0 -I {} grep '{}' myfile.csv
Run Code Online (Sandbox Code Playgroud)
不起作用......我该怎么办?
我知道我可以做到这一点perl或其他脚本语言......但我生性倔强坚持认为我应该能够做到这一点在bash使用标准的命令行工具,如sort,uniq,find,grep,cut,等.
教我,哦,打击大师.如何使用典型的cli工具获取所需的行列表?
And*_*ett 10
问题是如果#5之后的字段不同.你的约会时间长度是一样的吗?您可以将-w 16(包含时间)或-w 10(仅适用于日期)添加到uniq.
所以:
tr '\t' ',' < myfile.csv | sort -k5,5 | uniq -f 4 -D -w 16
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14007 次 |
| 最近记录: |