ホームページ >バックエンド開発 >Golang >Go の `exec.Command` 出力でリテラルおよび実際の改行文字を適切に処理する方法

Go の `exec.Command` 出力でリテラルおよび実際の改行文字を適切に処理する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-05 08:31:15408ブラウズ

How to Properly Handle Literal and Actual Newline Characters in Go's `exec.Command` Output?

Go Lang での改行文字の処理

Go lang では、コマンド出力を読み取るための一般的な方法は exec.Command を使用します。ただし、バイト スライスを使用する場合、リテラル改行文字 (「n」) と実際の改行を区別するのは難しい場合があります。

明確にするために、「リテラル」改行は文字列内に含まれる「n」ですが、 「実際の」改行は、文字列内で自然に発生する改行シーケンスです。例:

Print first result: "123;\n234;\n"
Print second result: "456;\n"

ここでは、最初の結果には 3 行が含まれていますが、2 番目の結果には 1 行しか含まれていません。

strings.Split や bufio.NewScanner などのメソッドを使用する場合、これらのタイプの改行を区別しないでください。これに対処するには、次のアプローチを利用できます。

replacedStr := strings.Replace(output, `\n`, "\n", -1)
processedLines := strings.Split(replacedStr, "\n")

このアプローチでは、strings.Replace がリテラルの改行文字 (「n」) を識別し、それらを実際の改行文字 (「n」) に置き換えます。結果の文字列 replaceStr には実際の改行が含まれます。その後、strings.Split は文字列を行に正しく分割できるようになりました。

このメソッドにより、リテラルの改行と実際の改行の両方が適切に処理され、目的のデータを行ごとに正確に処理できるようになります。

以上がGo の `exec.Command` 出力でリテラルおよび実際の改行文字を適切に処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。