Ken*_*uki 6 regex bash ubuntu newline file
如何"从文件中删除新行?
例如:
"one",
"three
four",
"seven"
Run Code Online (Sandbox Code Playgroud)
所以,我想删除\n之间three和four.我应该使用正则表达式,还是我必须使用程序读取每个字符的文件?
Win*_*ute 17
要使用GNU awk(for RT)专门处理双引号字符串中的那些换行符并将它们留在它们之外的那些换行符:
gawk -v RS='"' 'NR % 2 == 0 { gsub(/\n/, "") } { printf("%s%s", $0, RT) }' file
Run Code Online (Sandbox Code Playgroud)
这可以通过沿着"字符拆分文件并删除每个其他块中的换行来实现.使用包含的文件
"one",
"three
four",
12,
"seven"
Run Code Online (Sandbox Code Playgroud)
这将给出结果
"one",
"threefour",
12,
"seven"
Run Code Online (Sandbox Code Playgroud)
请注意,它不处理转义序列.如果输入数据中的字符串可以包含\",例如"He said: \"this is a direct quote.\"",则它将无法按预期工作.
您可以打印这些行".如果他们不这样做,请将其内容累积到变量中并稍后打印:
$ awk '/^"/ {if (f) print f; f=$0; next} {f=f FS $0} END {print f}' file
"one",
"three four",
"seven"
Run Code Online (Sandbox Code Playgroud)
由于我们始终打印上一个文本块,因此请注意END在处理完整文件后需要打印最后存储的值.
| 归档时间: |
|
| 查看次数: |
10200 次 |
| 最近记录: |