改行なしスペース 文字が含まれている設定ファイルで問題が発生しています。
その文字をsedで指定して、スペースに置き換えるにはどうすればよいですか。
sed -n 's/ / /g'
エラーの例
[。タイプ 'SOA' named.localhost:8:不明なRRタイプ '@' named.localhost:9:不明なRRタイプ '127.0.0.1' named.localhost:10 :不明なRRタイプ ':: 1' .....
この投稿には、元の問題のあるファイルの行を含めようとしました。動作していることは継ぎ目ではありません。 Pastebinダウンロードシームは、すべての元のバイナリを保持する唯一のツールです。 http://Pastebin.com/ZqT1EWbS 。元の行をコピーして貼り付け、端末で機能させることができるはずです。
この質問への答えは、遭遇しているノーブレークスペースの文字によって異なります。
以下は、質問のタイトルに記載されている改行しないスペース文字のそれぞれを置き換える方法の例です。さらに、Pastebinの出力に従ってOPが実際に要求しているUTF-8バージョン(C2 A0
)を置き換えます。
すべての例では、printf
よりも移植性が高いため、echo
を使用して出力を生成します。スペース文字は、出力を明確にするためにX
に置き換えられます。
printf '&#nbsp;\n' | sed 's/ /X/g'
printf ' \n' | sed 's/&160;/X/g'
printf ' \n' | sed 's/&[aA]0;/X/g'
printf '\xA0\n' | sed 's/\xA0/X/g'
またはtr
を使用:
printf '\xA0\n' | tr '\240' 'X'
printf '\x00\xA0\n' | sed 's/\x00\xA0/X/g'
printf '\xC2\xA0\n' | sed 's/\xC2\xA0/X/g'
上記のすべての場合の出力は次のとおりです。
X
今あなたの質問に、あなたはこのように見えるデータを持っています:
printf '@ IN SOA @ rname.invalid. (' | od -x
出力:
0000000 c240 c2a0 c2a0 c2a0 c2a0 c2a0 20a0 4e49
0000020 5320 414f a0c2 4020 7220 616e 656d 692e
0000040 766e 6c61 6469 202e 0a28
0000052
C2 A0
sを通常のスペースに置き換えるには、次を使用します。
printf '@ IN SOA @ rname.invalid. (' | sed 's/\xC2\xA0/ /g' | od -x
出力:
0000000 2040 2020 2020 2020 4e49 5320 414f 2020
0000020 2040 6e72 6d61 2e65 6e69 6176 696c 2e64
0000040 2820 000a
0000044
私が実用的な解決策にたどり着くのを手伝ってくれたすべての人に感謝します。
この投稿には、元の問題のあるファイルの行を含めようとしました。動作していることは継ぎ目ではありません。 Pastebinダウンロードシームは、すべての元のバイナリを保持する唯一のツールです。 http://Pastebin.com/ZqT1EWbS 。元の行をコピーして貼り付け、端末で機能させることができるはずです。
したがって、8進数を削除するとどうなりますか\0240
またはhex\xA0
。それは他のいくつかのファンキーなキャラクターを追加します。
$ echo "@ IN SOA @ rname.invalid。(" | sed -e "s/\ xA0 // g" @���� ��INSOA�@rname.invalid。(
実際のファイルに印刷されていない余分なデータがいくつかあります。 od(octal dump) ツールは、行全体の実際の16進数/ 8進数/バイナリ値を表示するのに非常に便利であることがわかりました。
$ echo "@ IN SOA @ rname.invalid。(" | od -x 0000000 c240 c2a0 c2a0 c2a0 c2a0 c2a0 20a0 4e49 0000020 5320 414f a0c2 4020 7220 616e 656d 692e 0000040 766e 6c61 6469 202e 0a28 0000052
現れ続けた他のキャラクターは\xC2
ノーブレークスペースの場合は印刷されません\xA0
はありますが、nbspが削除されると表示されます。そのため、 @ Thor answer のsed行を変更して削除する必要がありました。
これは私のために働いたものです。
$ echo "@ IN SOA @ rname.invalid。(" | sed -e "s/\ xC2\xA0// g" @ IN = SOA @ rname.invalid。(