【问题标题】:replace new line character between double quotes with \n in ubuntu在ubuntu中用\n替换双引号之间的换行符
【发布时间】:2021-03-12 11:59:56
【问题描述】:

数据样本输入:

Name    mobile  url message text
test11  1234567890  www.google.com  "Data Test New
Date:27/02/2020
sample1: 1bags
sample2: 20bags
Regards
The test user user user Sangha
Ph:091 : 123456789"
test12  1234567891   www.google.com  hello

我的输出应该是

Name    mobile  url message text
test11  1234567890  www.google.com  "Data Test New\nDate:27/02/2020\nsample1: 1bags\nsample2: 20bags\nRegards\nThe test user user user Sangha\nPh:091 : 123456789"
test12  1234567891  www.google.com  hello

我使用了下面的命令,但它不起作用

awk '!/"$/{sub(/$/,"\\n");printf "%s",$0;next}1' file

我也使用了其他几个命令,但在我的情况下它们都不起作用

【问题讨论】:

标签: bash shell unix awk sed


【解决方案1】:

使用gnu-awk,您可以这样做:

awk -v RS='"[^"]*"' '{gsub(/\r?\n/, "\\n", RT); ORS=RT} 1' file

Name    mobile  url message text
test11  1234567890  www.google.com  "Data Test New\nDate:27/02/2020\nItems: 1\nTotal: 3\nRegards\nABC DATa\nPh:091 : 123456789"
test12  1234567891   www.google.com  hello

Code Demo

【讨论】:

  • 使用您的脚本后,我得到以下输出名称移动网址消息文本 Ph:091 : 123456789"user Sanghagle.com "APMC BANGALORE ARRIVALS test12 1234567891 www.google.com hello
  • 它在那里工作,那么为什么它不能在我的终端上工作。
  • gawk 已安装在我的系统中。当我运行命令 sudo apt-get install gawk 然后我得到 gawk 已经是最新版本
  • 那么你可以使用:awk -v RS='("[^"]*")' '{gsub(/\r?\n/, "\\n", RT); ORS=RT} 1' file
  • 效果很好。非常感谢。你真是个乐于助人的人
猜你喜欢
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
  • 1970-01-01
相关资源
最近更新 更多