shell - 使用 shell 脚本获取每行中存在的文件的文件扩展名
问题描述
如何获取以下显示数据的文件扩展名。显然,我在 csv 文件中有数百万行。
col1 ,col2 ,col3 ,col4 , col5, col6, col7
aaaaa/ ,0 ,2018-03-16T09:31:42.000Z, xx-daily.......
aaaaa/201802/ ,0 ,2019-01-17T06:16:34.000Z, xx-daily
aaaaa/201802/Feb2018000000_0.gzip,32602738,2018-09-11T04:05:38.000Z, xx-daily
aaaaa/201802/Feb2018000001_0.gzip,32602738,2018-09-11T04:05:38.000Z, xx-daily
aaaaa/201802/Feb2018000002_0.gzip,32602738,2018-09-11T04:05:38.000Z, xx-daily
aaaaa/201802/Feb2018000003_0.gzip,32602187,2018-09-11T04:05:38.000Z, xx-daily
aaaaa/201802/Feb2018000004_0.gzip,32602187,2018-09-11T04:05:39.000Z, xx-daily
aaaaa/201802/Feb2018000005_0.gzip,32602187,2018-09-11T04:05:39.000Z, xx-daily
aaaaa/201802/Feb2018000006_0.gzip,32578449,2018-09-11T04:05:39.000Z, xx-daily
我需要拆分文件扩展名并创建另一列来填充同一 csv 文件中的文件扩展名值。
需要如下输出
col1 ,col2 ,col3 ,col4 , col5, col6, col7
aaaaa/ ,0 ,2018-03-16T09:31:42.000Z, xx-daily.......
aaaaa/201802/ ,0 ,2019-01-17T06:16:34.000Z, xx-daily
aaaaa/201802/Feb2018000000_0.gzip, gzip ,32602738,2018-09-11T04:05:38.000Z, xx-daily
aaaaa/201802/Feb2018000001_0.gzip, gzip ,32602738,2018-09-11T04:05:38.000Z, xx-daily
aaaaa/201802/Feb2018000002_0.gzip, gzip ,32602738,2018-09-11T04:05:38.000Z, xx-daily
解决方案
这有点笨拙,没有添加您似乎想要的空格,并在那些没有文件扩展名的行中引入了一个空白列(我相信这是正确的行为,并且很容易修改它以停止这样做如果你喜欢)。但是,在任何情况下,我都不会容忍回写到您正在阅读的同一文件中。awk 的一些实现提供了这样做的功能,但使用它是错误的。使用过滤器并将输出写入不同的文件。如果需要,您可以覆盖原始文件。
awk '{c=split($1,a,"."); ext=c>1?a[c]:""; $2=ext OFS $2}1' FS=, OFS=, input-file
您可以通过以下方式获得更好的间距:
awk '{c=split($1,a,"."); ext=c>1?a[c]:""; $2=ext OFS $2}1' FS=, OFS=',\t' input
你可以避免空列(但你真的不想这样做):
awk '{c=split($1,a,"."); if( c > 1) $2=a[c] OFS $2}1' FS=, OFS=',\t' input
推荐阅读
- visual-studio - Outlook 加载项的静默安装
- azure - 在 Azure Blob 存储中存储项目级 Blob(图像)
- python - 无法弄清楚为什么代码在 Python 3 中工作,但不是 2.7
- bash - Reformat columns/table to key/value lines in Bash
- r - appending json data from one column to another using keys/ids
- ios - 如何从 UIImage 中减去颜色?
- haskell - haskell beginner strings
- c - getchar 从输入中吃掉第一个字符
- sql - multiply SELECT results with values from another table
- python - JSON 写入文件错误,额外数据:第 1 行第 2347 列(字符 2346)