重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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

A 回答 (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 自身の問題ではないと思われますので、うまくいかない
部分を切り出して示してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/17 02:34

OSによる文字コード(JIS,ASCII,..)、使用するアプリケーションで、


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

文字コードタイプが異なるための問題で解決できませんかという提案です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/17 02:35

man すると POSIX モードではエスケープシーケンスが無効になる


と書いてありますが
-W compat を指定すると UNIX 互換で動作するらしいです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/17 02:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!