如果AWK中存在某些字符,如何加入下一行?

时间:2016-11-11 05:55:25

标签: awk

在文本文件(windows)中我有:

sometexthere"
nothingtodohere
yessomethinghere"
etc

使用AWK(在Ubuntu中)如何删除行末尾的撇号,用半冒号替换它:加入下一行?

所以它看起来像这样:

sometexthere:nothingtodohere
yessomethinghere:etc

1 个答案:

答案 0 :(得分:3)

这样:

awk '1' RS='"\n' ORS=':' yourfile

设置你的记录sep。加倍加引号和断行,以及你的输出记录sep。加入角色。

对于DOS 换行符,只需调整regex

awk '1' RS='"\r\n' ORS=':' yourfile

注意1的含义是什么?

简短回答,它只是一个快捷方式,以避免使用print语句。在awk中条件匹配时,默认操作是打印输入行,例如:

$ echo "test" |awk '1'
test

那是因为1总是true,所以这个表达式相当于:

$ echo "test"|awk '1==1'
test
$ echo "test"|awk '{if (1==1){print}}'
test