誰かが私を助けるか、正しい方向に私を指すことを願っています。今2週間見つけようとしています。
問題は私がLinux(RHEL)を使用していて、入力ストリームの文字をý
。\n
私は試しましたがawk '{gsub(/ý/,"\n")}1'
成功sed '$ s/ý/\\n/g'
しませんでした。また、次のトリックも試しました。
sed '$ s/ý/\\ /g'
運が悪い。
VIでファイルを開くと、次の内容が表示されるので、正しい文字を探していると確信しています。
DESCRIPTION : test line 1ýtest line 2ýtest line 3
詳細については、ý
UniVerse 多値区切り文字を参照してください。
どんな助けでも大変感謝します。本当にありがとうございました!
答え1
viに表示される文字は、複数の可能なエンコーディング(utf8、ASCII、ISO8859-1など)の変換にすることができます。したがって、次を宣言するとあいまいになります。
...VIでファイルを開くと、次のようになります。説明:テストライン1yテストライン2yテストライン3
明確にするには、ファイルの内容の16進(または8進)ダンプを提供する必要があります。注文する:
od -tx1c testfile
このようなファイルダンプを提供します。
ファイルをダンプする前に、私はこう言いました。
「UniVerse 多値区切り文字」が 252(0xFC) または 253(0xFD) で ý(ISO-8859-1 文字 0xFD) が表示される場合、y が実際にバイト 0xFD (または 375 から 375) と仮定するのが妥当です。 8進数)。
あなたが確認しましたコメントからこれは実際にはファイル内の値です。
これを知って、次のコマンドを発行します。
sed 's/\xfd/\n/g' testfile
うまくいくはずで、これが解決策であることを確認しました。