こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

\t,\nが効かない

HP-UXでずっと作業をしていたのですが、今度からLinuxで作業をすることになりました。HPのときに動いていたシェルスクリプトのawkのprintf中の「\t」「\n」が認識されず、そのまま表示されてしまいます。
なにか設定が必要なのでしょうか?「#!/bin/sh」がいけないのでしょうか?
基本的にあまり詳しくありません。
どうぞよろしくお願いいたします。

投稿日時 - 2009-03-13 23:56:37

QNo.4794691

困ってます

質問者が選んだベストアンサー

下記のスクリプトでも \n, \t は、そのまま表示されますか ?

#!/bin/sh
echo | awk '{printf " %s:%s\n", "ONE", "TWO" }'
echo | awk '{printf "TAB %s:\t%s\n", "ONE", "TWO" }'
echo | awk '{printf "LF %s:\n%s\n", "ONE", "TWO" }'

上のスクリプトでタブや改行が正しく動作するようであれば
awk 自身の問題ではないと思われますので、うまくいかない
部分を切り出して示してください。

投稿日時 - 2009-03-14 16:56:38

お礼

早々のご回答ありがとうございました。
awkは問題なく、echoがNGでした。ただechoも"-e"オプションで回避することができました。

投稿日時 - 2009-03-17 02:34:23

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

OSによる文字コード(JIS,ASCII,..)、使用するアプリケーションで、
改ページ、改行等の制御コードの問題でしようか。
hexeditで、ファイルの中の、文字コード、制御コードの使われ方を
分析し、理解していく以外ないかと思います。
これは、OSの歴史、文化みたいな問題で、どうしようもないと思います。
と言ってしまえば、終わりですが、回避策としては、nkfプログラムで、文字コード変換(2バイト文字コード日本語を含め)による
コード変換時、制御コードもその規則にしたがって変換させて
しまうという手はだめでしようか。

文字コードタイプが異なるための問題で解決できませんかという提案です。

投稿日時 - 2009-03-15 22:20:56

お礼

早々のご回答ありがとうございました。

投稿日時 - 2009-03-17 02:35:00

ANo.1

man すると POSIX モードではエスケープシーケンスが無効になる
と書いてありますが
-W compat を指定すると UNIX 互換で動作するらしいです。

投稿日時 - 2009-03-14 04:27:19

お礼

早々のご回答ありがとうございました。

投稿日時 - 2009-03-17 02:33:02

あなたにオススメの質問