我正在尝试通过以下代码读取linux命令生成的某些字符串输出:
out, err := exec.Command("sh", "-c", cmd).Output()
以上是[]byte类型,如何区分行内容中的“ \ n”字符与实际换行符?我试过了
[]byte
strings.Split(output, "\n")
和
bufio.NewScanner(strings.NewReader(output))
但是只要看到“ \ n”字符,它们都会拆分整个字符串缓冲区。
好了,要澄清一下,“虚幻”中断是字符串中包含的“ \ n”字符,如下所示, Print first result: "123;\n234;\n" Print second result: "456;\n"
Print first result: "123;\n234;\n" Print second result: "456;\n"
整个输出是一个大的多行字符串,它可能还包含其他带引号的字符串,我正在处理go程序中的整个字符串输出,但是我无法控制命令的输出并在“ \ n“字符。
进一步说明:我打算处理包含字符串字符串的字节序列,并希望保留\n内部字符串中包含的“ ”并使用外层“ \n”来换行。因此,对于以下字节序列:
\n
First line: "test1" Second line: "123;\n234;\n345;" Third line: "456;\n567;" Fourth line: "test4"
我想在处理整个序列时获得3行,而不是获得7条总行。这是一个旧项目,但我记得我可以使用Python使用“ for line in f” 这样的语法直接获取3行,并打印第二个内部字符串的内容,而不用渲染它。
for line in f
“真实”和“虚幻”换行符之间没有区别。
如果您使用的是类似Unix的系统,则文本文件中的行尾将以LF或'\n'字符表示。您不能'\n'在行中间使用字符。
'\n'
内存中的字符串可以包含任意多个'\n'字符。将该字符串"foo\nbar\n"写入文本文件后,将创建两行,"foo"而"bar"。
"foo\nbar\n"
"foo"
"bar"
两者之间没有有效的区别
fmt.Println("foo") fmt.Println("bar")
fmt.Printf("foo\nbar\n")
两者都打印相同的两行序列,如下所示:
fmt.Println("foo\nbar")