awk - 使用 awk 将空白值替换为先前的非空白第一列值(值分隔列)
问题描述
我有两列逗号分隔的文件,其中第一列始终为空,第二列有时为空(当最后一列为空时,没有最后的逗号):
,value_c1_1
,,value_c2_1
,,value_c2_2
,,value_c2_3
,value_c1_2
我想使用 awk 用以前的非空列值填充空列值,然后删除第二列为空的行:
,value_c1_1,value_c2_1
,value_c1_1,value_c2_2
,value_c1_1,value_c2_3
与这个问题的答案有很大的不同
awk '/^ /{$0=(x)substr($0,length(x)+1)}{x=$1}1' file
是字段是字符分隔的(而不是固定长度),并且第一列始终为空。
解决方案
awk -F, 'BEGIN { OFS = FS } { if ($2 == "") $2 = last2; else last2 = $2; print }'
如果第 2 列为空,则将其替换为保存的值;否则,请保存第 2 列中的值以供将来使用。打印该行。(该BEGIN
块确保输出字段分隔符OFS
与(输入)字段分隔符相同FS
。)
如果您只想打印具有 3 个字段的行,则:
awk -F, 'BEGIN { OFS = FS }
{ if ($2 == "") $2 = last2; else last2 = $2; if (NF == 3) print }'
推荐阅读
- html - 图片中的复选框位置
- mysql - 内部联接返回重复记录
- python - 来自2类beautifulsoup的数据框
- javascript - react-web-ar - 包含 AFrameRenderer 的渲染组件给出未捕获的错误
- node.js - server.js 文件中的 Cors 代理问题(react、express、sql)
- javascript - 自动填写外部网页的特定登录表单
- javascript - 正则表达式测试所有字符是否具有相同的大小写
- python - 如何将 Python NdArray 转换为 String 并返回 NdArray ?(在这种情况下)
- extjs - 更改事件之前的 extjs 无线电组
- woocommerce - 使用 REST API 从 Woocommerce 获取所有类别