質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Q&A

解決済

5回答

3403閲覧

ターミナルで文字コードを変換して保存

kuniatsu

総合スコア141

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

0グッド

0クリップ

投稿2018/01/24 11:38

windowsからteratarmを使いlinuxに接続しています。

teratarmでcatコマンドを使いファイルを確認すると下記のように表示されます。

$cat text.txt \u30ec\u30b6\u30fc

こちらを
$cat text.txt |
python -c 'from sys import stdin; print stdin.readline().decode("unicode-escape")'
と入力すると

$cat text.txt | python -c 'from sys import stdin; print stdin.readline().decode("unicode-escape")' レザー

と表示されます。
文字コードを直した状態で保存したいのですが、

CP text.txt | python -c 'from sys import stdin; print stdin.readline().decode("unicode-escape")' text2.txt

としたのですが、コピーされませんでした。
どのようにすれば文字コードを直した状態で複製できますか?

また、できればpythonを使わずに文字コードを変換できると望ましいので、別のやり方があれば教えてください。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

リダイレクトについて学びましょう。

Bash

1python -c 'from sys import stdin; print stdin.readline().decode("unicode-escape")' < text.txt > text2.txt

あと、これは「文字コード変換」ではありません。
decode("unicode-escape")という処理名から分かる通り、「エンコードされた物のデコード」です。

投稿2018/01/24 11:48

otn

総合スコア84421

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuniatsu

2018/01/25 01:45

文字コード変換ではなくエンコードですね。ありがとうございます。勉強になります。 コピーはできたのですがPythonのエラーが出てしまい結局コピーできづじまいになっています。 もしPythonに明るければ引き続きこちらの質問をもご協力頂けると嬉しいです。 https://teratail.com/questions/110521
guest

0

ベストアンサー

pythonはわからないですが、保存しないとだめだと思いますよ
`>'が足りてないだけだと思います

bash

1cat text.txt |python -c 'from sys import stdin; print stdin.readline().decode("unicode-escape")' > test2.txt

投稿2018/01/24 11:43

mosapride

総合スコア1480

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuniatsu

2018/01/25 01:44

>が必要なのですね。大変勉強になりました。 1番シンプルで分かりやすかったです。 コピーはできたのですがPythonのエラーが出てしまい結局コピーできづじまいになっています。 もしPythonに明るければ引き続きこちらの質問をもご協力頂けると嬉しいです。 https://teratail.com/questions/110521
guest

0

bash

1$ sudo apt install nkf 2OR 3$ sudo yum install nkf 4 5$ cat text.txt|sed -E 's/\u(....)/\&#x\1;/g'|nkf --numchar-input -w > new.txt

追記
JDKがインストールされているなら、以下でも変換出来ます。尚、JDK 1.9では以下のコマンドは廃止された模様。

bash

1$ cat text.txt|$JAVA_HOME/bin/native2ascii -reverse > new.txt

投稿2018/01/24 12:00

編集2018/01/25 12:50
hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/01/24 12:06

nkfだと、このデコードは出来ないですね。
hichon

2018/01/24 12:17

訂正しました。
otn

2018/01/24 12:42

nkfのバージョンが古いとデフォルト出力はiso-2022-jpなので、-w が必要ですね。
hichon

2018/01/24 12:50

追加しました。
kuniatsu

2018/01/25 01:46

私の説明不足で申し訳ありません。自社の環境のルールでnkfが入れられませんでした。 また、コピーはできたのですがPythonのエラーが出てしまい結局コピーできづじまいになっています。 もしPythonに明るければ引き続きこちらの質問をもご協力頂けると嬉しいです。 https://teratail.com/questions/110521
hichon

2018/01/25 12:51 編集

追記しました。
guest

0

一般にnkfなのでしょうけど、使用不可ということでperl

perl

1cat test.txt|perl -ne 'use strict;use warnings;binmode(STDOUT, ":utf8");s/\u([0-9a-fA-F]{4})/chr(hex($1))/eg;print;'

投稿2018/01/25 11:02

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

できればpythonを使わずに文字コードを変換できると望ましいので、別のやり方があれば教えてください。

こちらについて提案します。Pythonを使いたくない理由が「なんども実行するので、短いコマンドで済ませたい」ということなのでしたら、「何度も実行しそうなスクリプトはとっておけばよい」のではないでしょうか?

bash

1# 2# 質問にあるpython -c ...の中身をudecode.pyにして~/binに置いておくと・・・ 3# 4$ cat ~/bin/udecode.py 5#!/usr/bin/python 6from sys import stdin 7print stdin.readline().decode("unicode-escape") 8# 9# 実行権限も付けておく 10# 11$ ls -l ~/bin/udecode.py 12-rwxr-xr-x 1 keiji None 89 124 20:52 /home/ksoh/bin/udecode.py 13# 14# 普通にコマンドとして使う 15# 16$ cat text.txt | udecode.py > text2.txt 17$ cat text2.txt 18レザー

一時的にしか使わないのなら一々こういうことをする必要もないと思いますが・・・

投稿2018/01/24 12:02

編集2018/01/25 01:49
KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuniatsu

2018/01/25 01:47

シンプルな実行方法ありがとうございます。しかし、全体のコピー方法がうまく行きませんでした。 もしPythonに明るければ引き続きこちらの質問をもご協力頂けると嬉しいです。 https://teratail.com/questions/110521
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問