bash - 将所有有和没有空白字段的行打印到单独的文件中
问题描述
我有一个带有 col1、col2、col3、col4 的 .csv 文件,我想消除那些在 col4 中没有任何值的行。
col1 col2 col3 col4
----------------------
1, xx, yy, zz,
2, aa, bb, ,
3, cc, dd, ee,
4, ff, gg, ,
5, hh, ii, ,
我希望您返回 2 个文件,其中一个包含:
col1 col2 col3 col4
---------------------
1, xx, yy, zz,
3, cc, dd, ee,
和另一个:
col1 col2 col3 col4
---------------------
2, aa, bb, ,
4, ff, gg, ,
5, hh, ii, ,
可以使用诸如 awk、sed、grep 之类的工具来执行此操作……我不知道如何执行打印具有空列 4 或 NULL 的行的部分。
解决方案
如图所示,您的数据文件不符合 CSV 规则,因为第 1 行不是逗号分隔的。如果逗号之间有空格,那么您将需要更复杂的东西,但如果文件看起来更像:
1,xx,yy,zz,
2,aa,bb,,
3,cc,dd,ee,
4,ff,gg,,
5,hh,ii,,
然后这些将根据需要分隔行:
awk -F, '{if(length($4)>0){print}}' col.csv
awk -F, '{if(length($4)==0){print}}' col.csv
第一个将给出第 1 行和第 3 行,第二个将给出第 2,4 和 5 行。
推荐阅读
- bash - 如何按照模式在文件中转换十六进制数字?
- java - Java Spark 中的重新映射键
- docker - 只能写入 1 minReplication 节点中的 0 个。有 3 个数据节点正在运行,并且在此操作中排除了 3 个节点。使用泊坞窗
- r - 如何在多个数据集上使用 full_join/Reduce 并具有自定义后缀?
- tensorflow - 将经过训练的模型转换为在 Tensorflow 中使用混合精度
- unity3d - 我的地砖和玩家移动 Unity 2D 出现问题
- solana - 如何在 solscan 上创建一个查看任意随机交易的相同交易?
- c# - pgp 解密失败,因为来自 BlobClient.OpenReadAsync() 的输入流不可搜索
- flutter - 使用signInWithCredential在谷歌登录后获取uid
- python - 循环遍历给定的索引并使用动态名称保存文件