• ベストアンサー

\t,\nが効かない

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

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

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.2

下記のスクリプトでも \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 自身の問題ではないと思われますので、うまくいかない 部分を切り出して示してください。

lts107
質問者

お礼

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

その他の回答 (2)

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.3

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

lts107
質問者

お礼

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

  • umota
  • ベストアンサー率46% (150/324)
回答No.1

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

lts107
質問者

お礼

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

関連するQ&A