- ベストアンサー
\t,\nが効かない
HP-UXでずっと作業をしていたのですが、今度からLinuxで作業をすることになりました。HPのときに動いていたシェルスクリプトのawkのprintf中の「\t」「\n」が認識されず、そのまま表示されてしまいます。 なにか設定が必要なのでしょうか?「#!/bin/sh」がいけないのでしょうか? 基本的にあまり詳しくありません。 どうぞよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
下記のスクリプトでも \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 自身の問題ではないと思われますので、うまくいかない 部分を切り出して示してください。
その他の回答 (2)
- yakan9
- ベストアンサー率54% (2244/4125)
OSによる文字コード(JIS,ASCII,..)、使用するアプリケーションで、 改ページ、改行等の制御コードの問題でしようか。 hexeditで、ファイルの中の、文字コード、制御コードの使われ方を 分析し、理解していく以外ないかと思います。 これは、OSの歴史、文化みたいな問題で、どうしようもないと思います。 と言ってしまえば、終わりですが、回避策としては、nkfプログラムで、文字コード変換(2バイト文字コード日本語を含め)による コード変換時、制御コードもその規則にしたがって変換させて しまうという手はだめでしようか。 文字コードタイプが異なるための問題で解決できませんかという提案です。
お礼
早々のご回答ありがとうございました。
- umota
- ベストアンサー率46% (150/324)
man すると POSIX モードではエスケープシーケンスが無効になる と書いてありますが -W compat を指定すると UNIX 互換で動作するらしいです。
お礼
早々のご回答ありがとうございました。
お礼
早々のご回答ありがとうございました。 awkは問題なく、echoがNGでした。ただechoも"-e"オプションで回避することができました。