在UNIX中用引号引起来的字符串中删除换行符

胜利者

我有一个像这样的文本文件:

abc 123 xyz
"abc
123" xyz

如果新行出现在带引号的字符串中,我想用空格('')替换新行。所以我想输出:

abc 123 xyz
abc 123 xyz

有没有办法在Unix中编写程序呢?

fedorqui'停止伤害'

您可以打印新行,也可以仅打印一个空格,具体取决于"到目前为止的行距这样,如果我们将引号括起来,将仅打印新行。

$ awk '{n=split($0,a,"\""); val+=(n-1); gsub("\"",""); printf "%s%s", $0, (val%2?" ":"\n")}' file
abc 123 xyz
abc 123 xyz

解释

  • n=split($0,a,"\"")计算"当前行中出现的数量作为split()返回基于"定界符的片段数,至少我们得到的值1
  • val+=(n-1)跟踪余额。-1仅计算报价数量,因为split返回的数量比所需数量多一。
  • gsub("\"","") 删除字符串中的双引号。
  • printf "%s%s", $0, (val%2?" ":"\n")将行与空格或换行一起打印。如果val为2的倍数,则换行;否则为0。否则,空间。

测试

另一个例子:

$ cat a
abc 123 xyz
"abc
hee
123" xyz
and "this
is not everything"
$ awk '{n=split($0,a,"\""); val+=(n-1); gsub("\"",""); printf "%s%s", $0, (val%2?" ":"\n")}' a
abc 123 xyz
abc hee 123 xyz
and this is not everything

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从字符串中删除所有未用单引号或双引号引起来的空格

如果空格在Python中用引号引起来,如何替换字符串中的所有空格?

如何在Xamarin.Forms中用引号引起来的字符串

升级到Rails 4.2.0:在条件中用引号引起来的字符串文字

用引号引起来的字符串处理引号

SQLException:字符串'''后的右引号引起来

请给RegEx帮助-用引号引起来的字符串中包含双引号

sed:仅在用引号引起来时替换文本中的字符串

php:字符串被双引号引起来,而不是单引号引起来。怎么修?

除了在python中用引号引起来的字符串时,如何将字符串除以字符串?

Shell:如何仅在文件中用双引号引起来的字符中替换字符?

如何在单引号引起来的字符串中转义单引号

从字符串PHP中删除换行符

从字符串中删除换行符

如何从字符串中删除多个换行符

如何从字符串中删除换行符?

如何从字符串中删除换行符?

如何从字符串中删除换行符?

使用util.format,在数组中的每个字符串周围用双引号引起来

ASP.NET Core API发送用双引号引起来的字符串

Python查找用单引号引起来的字符串

Perl-DBI字符串错误地被双引号引起来

用双引号引起来的字符串拆分问题

检查字符串是否用单引号引起来Javascript

Python:用空格分隔的字符串的每个词都用引号引起来

字符串“ Catch Fry's Low Impact”后面的引号引起来

字符串扩展-用引号引起来的变量转义为值

通过Web API发送的字符串用引号引起来

使用JavaScript提取由数字无关的双引号引起来的子字符串