2016-04-28 13 views
-1

わからないラインですべての単語の前後に引用符を入れて、私は、このような値のリストを持っている:はこれが可能であれば

#value, 
#value2, 
#value-3 

いくつかはそれらにダッシュを持って、そして最後の行は持っていませんコンマ。

#'value', 
#'value2', 
#'value3' 

私はこれをどのようにして実現できますか?すべての単語を一重引用符で囲む必要があります。

答えて

1

はあなたのリストは以下のようlist.txt

sed "s/^#\([^,]*\)\(,\?\)$/#\'\1\'\2/" < list.txt 

がうまくいく中であると仮定します。

それは

  1. #で始まることをすべての行を置き換えます。 \([^,]*\)
  2. と、必要に応じてコンマ - - \(,\?\)
  3. 何もない - sedのでは、これは^#
  4. として書かれているカンマが含まれていない文字の配列を有するラインと$

をその は#、アポストロフィー\`、第1の配列\1、別のアポストロフィーおよび第2の配列\2を有する。

ここで我々はあなたが行うことができますAWKを使用

sed "s/^#\([^,]*\)\(,\?\)$/#\'\1\'\2/" <<END 
> #value, 
> #value2, 
> #value-3 
> . 
> END 
#'value', 
#'value2', 
#'value-3' 
. 
+0

は、例を入れて、私はここに – Pete

+0

@Peteを受け入れるだろう一種の、一例です。 –

1

これはそれを行う必要があります:あなたはsedを使用することができ

sed "s/^#\([^,]*\)\(.*\)/#'\1'\2/" 
0

を行く:

awk 'BEGIN{FS=OFS=","} {$1 = "#\047" substr($1, 2) "\047"} 1' file 

#'value', 
#'value2', 
#'value-3' 
関連する問題