2017-01-09 4 views
0
ここ

は、元の文字列内の文字の一部をエスケープするので、sedを実行した後 に「&」演算子を使用した場合、フィールド間の空白を維持する方法

./some_file.c Fri Jan 6 17:24:13 MPST 2017 

を交換する必要がある例ラインでのsed 、これは私がここで

\.\/some_file\.c Fri Jan 6 17:24:13 MPST 2017 
         ^
         1 less space 

を得るものであるであるbashスクリプトの私のsedコマンド

local escaped_temp1=$(echo $temp1 | sed --regexp-extended 's/[\/&.]/\\&/g') 

Mどうしたら空白を保存することができますか?

答えて

2

Sedは空白を削除しません。echoは引用符で囲まれていません。代わりにecho "$temp1"を使用してください:

$ temp1='./some_file.c Fri Jan 6 17:24:13 MPST 2017' 
$ echo $temp1 
./some_file.c Fri Jan 6 17:24:13 MPST 2017 
$ echo "$temp1" 
./some_file.c Fri Jan 6 17:24:13 MPST 2017 

サイドノートを:あなたが実際に\\\を交換したい場合を除き、ブラケット表現で/をエスケープする必要はありません。また、実際には拡張正規表現を使用していないので、--regexp-extendedは必要ありません。

+0

+1は、同じものをコメントしようとしていました... [なぜ、私のシェルスクリプトが空白やその他の特殊文字で詰まるのですか?](https://unix.stackexchange.com/questions/131766/why-私のシェルスクリプトの空白または他の特殊文字/ 131767#131767) – Sundeep

+0

ありがとうございます。それは働いた – Mox

関連する問題