2016-04-28 5 views
1

どのように私は、そのようなファイルに共通のエスケープシーケンスを翻訳します:エスケープされている文字にファイルの特殊文字をどのように解釈するか?

abc\n\t\x22def\x22\t123 

:Linuxの(DebianとCentOSの)中

abc 
    "def" 123 

具体的には、私は意味: \n\t\r\\\'\"\0\o**\x**

大きな正規表現やCコンパイラがなくても簡単な方法があるはずです。多分、Perlのonelinerはそれを行うことができますか?あるいは、何かBashコマンド?

答えて

2

使用echo

# echo -e "abc\n\t\x22def\x22\t123" 
echo -e "`cat file`" 

出力:

abc 
     "def" 123 
+0

私は本当に簡単なことがあることを知っていました。 –

+1

注意[backticksは推奨されていません](http://wiki.bash-hackers.org/scripting/obsolete)ので、代わりに '$(cat file)'を使うのが良いでしょう。 – fedorqui

2

jotikの答えは完全に罰金です。また、使用することができます。

echo -e "$(< file)" 

参照:

$ echo -e "$(< file)" 
abc 
    "def" 123 

man bashから:

コマンド置換

コマンド置換は、コマンドの出力は、COMを交換することができます mand name。二つの形式がある:

  $(command) 

又は

  `command` 

はバッシュは 末尾の改行を削除して、コマンドを実行し、コマンドの標準出力と コマンド置換を置き換えることによって展開を行います。埋め込み改行は削除されませんが、 は単語分割中に削除される可能性があります。

コマンド置換$(cat file)は、同等だがより高速の$(< file)に置き換えることができます。

関連する問題