Shell SED-如何添加'';并且,对于字符串的每个字符
我一直在尝试向字符串列表中添加一些特殊字符,但我一直使用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’
[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
,该怎么办?对于大多数数据格式,您需要某种转义,比如'\'',
,而不是'',