Shell SED-如何添加'';并且,对于字符串的每个字符

Shell SED-如何添加'';并且,对于字符串的每个字符,shell,sed,Shell,Sed,我一直在尝试向字符串列表中添加一些特殊字符,但我一直使用sed,看看是否有人知道: [user@user]$ more file.txt STRING#!-@ [user@user]$ cat file.txt | sed -r 's/(.{1})/\1'\'\''\, /g;s/,$//' S'', T'', R'', I'', N'', G'', #'', !'', -'', @'', 我需要字符之间的两个“”和每个字符“S”后的逗号, 正确的输出应该如下所示: ‘S’、‘T’、‘R’

我一直在尝试向字符串列表中添加一些特殊字符,但我一直使用sed,看看是否有人知道:

[user@user]$ more file.txt
STRING#!-@


[user@user]$ cat file.txt | sed -r 's/(.{1})/\1'\'\''\, /g;s/,$//'
S'', T'', R'', I'', N'', G'', #'', !'', -'', @'',
我需要字符之间的两个“”和每个字符“S”后的逗号, 正确的输出应该如下所示: ‘S’、‘T’、‘R’、‘I’、‘N’、‘G’、‘#’、‘!’、‘-’、‘@’、等等


有什么想法吗?

更正版本:
sed-r的/(.{1})/“\''''\1''''''''”,/g;s/,$/'
-反向引用应位于引号之间。不确定是否需要逗号后的空格,我删除了它以允许第二个
s
命令匹配


您还可以使用
\x27
表示单引号字符:

$echo'字符串#!-@'sed的//\x27&\x27,/g;s/,$/'
‘S’、‘T’、‘R’、‘I’、‘N’、‘G’、‘#’、‘!’、‘-’、’@'
&
将有与regexp匹配的完整文本,因此在这种情况下不需要使用捕获组

其他说明:

  • 无需使用
    cat文件| sed'..'
    ,您可以使用
    sed'..'文件
  • -r
  • {1}

    • 更正版本:
      sed-r's/(.{1})/'\''''''\'\1'''''''''./g;s/,$/'
      -反向引用应位于引号之间。不确定是否需要逗号后的空格,我删除了它以允许第二个
      s
      命令匹配


      您还可以使用
      \x27
      表示单引号字符:

      $echo'字符串#!-@'sed的//\x27&\x27,/g;s/,$/'
      ‘S’、‘T’、‘R’、‘I’、‘N’、‘G’、‘#’、‘!’、‘-’、’@'
      
      &
      将有与regexp匹配的完整文本,因此在这种情况下不需要使用捕获组

      其他说明:

      • 无需使用
        cat文件| sed'..'
        ,您可以使用
        sed'..'文件
      • -r
      • {1}

        • 您也可以使用
          awk

          awk '{
            split($0, chars, ""); 
            joined = "\x27";
            for (i=1; i in chars; i++) {
              joined = joined sep chars[i];
              sep = "\x27,\x27"
            };
            print joined"\x27"
          }' file.txt
          
          一艘班轮:

          awk'{split($0,chars,”);joined=“\x27”for(i=1;i in chars;i++){joined=joined sep chars[i];sep=“\x27,\x27”};print joined“\x27”}”file.txt
          
          看一看

          注:

          • split($0,chars,”)
            将输入字符串拆分为字符
          • joined=“\x27”
            -使用
            ”字符初始化
            加入的
          • sep=”“
            使用空字符串初始化
            sep
          • for(i=1;i在字符中;i++){joined=joined sep chars[i];sep=“\x27\x27”}
            将字符与
            ,“
            子字符串连接,并将其添加到
            joined
          • 打印加入的“\x27”
            -打印加入的
            并附加

            • 您也可以使用
              awk

              awk '{
                split($0, chars, ""); 
                joined = "\x27";
                for (i=1; i in chars; i++) {
                  joined = joined sep chars[i];
                  sep = "\x27,\x27"
                };
                print joined"\x27"
              }' file.txt
              
              一艘班轮:

              awk'{split($0,chars,”);joined=“\x27”for(i=1;i in chars;i++){joined=joined sep chars[i];sep=“\x27,\x27”};print joined“\x27”}”file.txt
              
              看一看

              注:

              • split($0,chars,”)
                将输入字符串拆分为字符
              • joined=“\x27”
                -使用
                ”字符初始化
                加入的
              • sep=”“
                使用空字符串初始化
                sep
              • for(i=1;i在字符中;i++){joined=joined sep chars[i];sep=“\x27\x27”}
                将字符与
                ,“
                子字符串连接,并将其添加到
                joined
              • 打印加入的“\x27”
                -打印加入的
                并附加

              那么你明白
              /\1'\'\'\'\\\\\\\\\\\\\\\\\\\/
              做什么了吗?你认为
              \1
              是什么意思?这些
              “\”
              是什么意思?\1将打印字符串和“\”以打印特殊字符“?
              回显“1234”\sed“s/”、/g;s/、$/”
              如果字符串包含
              foo'bar
              ,该怎么办?对于大多数数据格式,您需要某种转义,比如
              ,而不是
              ,那么您是否理解
              /\1'\'\'\'\,/
              的作用?你认为
              \1
              是什么意思?这些
              “\”
              是什么意思?\1将打印字符串和“\”以打印特殊字符“?
              回显“1234”\sed“s/”、/g;s/、$/”
              如果字符串包含
              foo'bar
              ,该怎么办?对于大多数数据格式,您需要某种转义,比如
              '\'',
              ,而不是
              '',