使用shell中的AWK删除换行符替换?

时间:2016-11-13 18:02:18

标签: shell awk

我有一个文件:

A.TXT

f1,f2,f3
a,b,c
d,e,f
g,h,i

我想通过删除f3中的换行符来连接f2和f3 [即。 f2 = f2.f3]并更新文件。我尝试了下面的命令,但新行字符也被插入。如何删除该部分?

awk -F "," -v OFS=, '{$2 = $2$3;print}' abc.txt > abc.tmp && mv abc.tmp abc.txt

1 个答案:

答案 0 :(得分:3)

这是由于在行尾存在DOS换行符\r

您可以将{gnu awk命令与RS用作\r\n来处理:

awk -v RS='\r\n' 'BEGIN{FS=OFS=","} NR>1{$2 = $2$3} 1' a.txt

f1,f2f3,f3
a,bc,c
d,ef,f
g,hi,i

或者,您可以在使用常规awk命令之前运行dos2unix命令:

dos2unix a.txt
awk 'BEGIN{FS=OFS=","} NR>1{$2 = $2$3} 1' a.txt