如果AWK中有某个字符,如何连接下一行?
在文本文件(windows)中,我有: 使用AWK(在Ubuntu中)如何删除行尾的撇号“用分号替换:并加入下一行 看起来是这样的:如果AWK中有某个字符,如何连接下一行?,awk,Awk,在文本文件(windows)中,我有: 使用AWK(在Ubuntu中)如何删除行尾的撇号“用分号替换:并加入下一行 看起来是这样的: sometexthere:nothingtodohere yessomethinghere:etc 这样: awk '1' RS='"\n' ORS=':' yourfile 只需将记录sep.设置为双引号加换行符,将输出记录sep.设置为连接字符 对于DOS换行符,只需调整regex: awk '1' RS='"\r\n' ORS=':' yourfile
sometexthere:nothingtodohere
yessomethinghere:etc
这样:
awk '1' RS='"\n' ORS=':' yourfile
只需将记录sep.设置为双引号加换行符,将输出记录sep.设置为连接字符
对于DOS
换行符,只需调整regex
:
awk '1' RS='"\r\n' ORS=':' yourfile
注意:这是什么意思
简单回答,这只是避免使用print语句的快捷方式。在awk中,当条件匹配时,默认操作是打印输入行,例如:
$ echo "test" |awk '1'
test
这是因为1
将始终为,因此此表达式等效于:
$ echo "test"|awk '1==1'
test
$ echo "test"|awk '{if (1==1){print}}'
test
不,仍然完全一样(ubuntu),复制并粘贴一个文件中的示例并测试它。啊,对不起,我在问题中添加了额外的信息(文本文件是windows文本文件)&我在ubuntu中使用AWK…这些信息有帮助吗?谢谢,这是一个完美的答案。我有很多东西要学习,我开始阅读AWK书籍:)
$ echo "test"|awk '1==1'
test
$ echo "test"|awk '{if (1==1){print}}'
test