在一行中的每个单词周围加上引号

时间:2016-04-28 12:02:46

标签: bash

不确定这是否可行,但我有一个像这样的值列表:

#value,
#value2,
#value-3

有些人有破折号,最后一行没有逗号。我需要在每个单词周围加上单引号,如下所示:

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

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

这应该这样做:

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

答案 1 :(得分:1)

您可以使用list.txt

假设您的列表位于sed "s/^#\([^,]*\)\(,\?\)$/#\'\1\'\2/" < list.txt

#

将如下工作。

它将替换

的每一行
  1. ^#开头。在sed中,这写为\([^,]*\)
  2. 包含一系列不包含逗号的字符 - \(,\?\)
  3. 以及可选的逗号 - $
  4. ,别无其他 - #
  5. 用一条线 有\`,撇号\1,第一个序列\2,另一个撇号和第二个序列sed "s/^#\([^,]*\)\(,\?\)$/#\'\1\'\2/" <<END > #value, > #value2, > #value-3 > . > END #'value', #'value2', #'value-3' .

    我们走了

    {{1}}

答案 2 :(得分:0)

使用awk你可以这样做:

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

#'value',
#'value2',
#'value-3'