首页 > 解决方案 > 如何grep文本文件中的列中存在的换行符

问题描述

我有一个文本文件,其中的数据由管道分隔符分隔。我有一列名为地址,地址值中有换行符。我必须从文件中删除新行。有没有办法从地址字段中 ​​grep 换行符?

标签: linuxunix

解决方案


这是非常脆弱的,您可能希望使其健壮,但您可以尝试以下操作:

$ cat input
a|b|c|d|e|f|g
1|2|3
a|4|5|6|7
$ awk 'NF<7{getline a; $0 = $0 a}1' FS=\| input
a|b|c|d|e|f|g
1|2|3a|4|5|6|7

如果您担心包含记录分隔符或换行符的多个字段,您可以尝试:

awk '{while( split($0, a, "\|") < 7 ){if(getline b) $0 = $0 b; else exit;}}1' FS=\| input

(在每一个中,我都任意选择了 7 作为预期列的数量,但这很容易参数化。)


推荐阅读