使用Awk移除管道分隔文件中第三字段为空的行并转移至新文件
没问题,这事儿用Awk就能一步搞定!核心思路就是在Awk里加两个判断分支,分别处理要保留的行和要移除的行:
实现命令
awk -F '|' '$3 != "" {print > "temp_file"} $3 == "" {print > "file2"}' file1 && mv temp_file file1
逐部分解释
-F '|':告诉Awk用管道符|作为字段分隔符,这样才能正确识别第三字段$3$3 != "" {print > "temp_file"}:如果第三字段不为空,就把该行写入临时文件temp_file$3 == "" {print > "file2"}:如果第三字段是空的,就把该行写入你指定的file2&& mv temp_file file1:等Awk处理完所有行后,把临时文件替换成原文件file1,这样原文件就只剩下符合要求的行啦
小提示
千万别直接让Awk写入原文件file1哦!因为Awk在读取文件的同时写入会导致数据错乱,用临时文件中转才是安全的做法。
内容的提问来源于stack exchange,提问作者as7951
相关产品推荐
相关产品推荐

