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'、'I'、'N'、' G', '#', '!', '-', '@',
有任何想法吗?
回答
更正的版本:sed -r 's/(.{1})/'''1''',/g;s/,$//'- 反向引用应该在引号之间。不确定逗号后是否需要空格,我删除了它以允许第二个s命令匹配。
您还可以使用x27来表示单引号字符:
$ echo 'STRING#!-@' | sed 's/./x27&x27,/g; s/,$//'
'S','T','R','I','N','G','#','!','-','@'
& 将具有与正则表达式匹配的整个文本,因此在这种情况下无需使用捕获组。
其他注意事项:
- 不用用
cat file | sed '..',可以用sed '..' file -E与这些天相比,现在更便携-r.{1}与.