Bash 查找匹配的`'';使用sed时
是的,这个问题已经被问过很多次了,在答案中,我们在单引号前告诉我们Bash 查找匹配的`'';使用sed时,bash,sed,sh,Bash,Sed,Sh,是的,这个问题已经被问过很多次了,在答案中,我们在单引号前告诉我们\转义字符 在以下代码中,它不起作用: LIST="(96634,IV14075295,TR14075685')" LIST=`echo $LIST | sed 's/,/AAA/g' ` echo $LIST # Output: (96634AAAIV14075295AAATR14075685') # Now i want to quote the list elements LIST
\
转义字符
在以下代码中,它不起作用:
LIST="(96634,IV14075295,TR14075685')"
LIST=`echo $LIST | sed 's/,/AAA/g' `
echo $LIST # Output: (96634AAAIV14075295AAATR14075685')
# Now i want to quote the list elements
LIST=`echo $LIST | sed 's/,/\',\'/g' ` # Giving error
# exit 0
错误:
line 7: unexpected EOF while looking for matching `''
line 8: syntax error: unexpected end of file
在sed命令中使用双引号代替单引号,并删除最后一个反勾号之前的空格。如果sed模式中存在单引号,则使用另一种封闭引号(即双引号) 这条线是
LIST=$(echo $LIST | sed "s/,/\',\'/g")
不要在sripts中使用反勾号而不是baccticks,使用
$()
而不是单引号,在sed命令中使用双引号,并删除最后一个反勾号之前的空格。如果sed模式中存在单引号,则使用另一种封闭引号(即双引号)
这条线是
LIST=$(echo $LIST | sed "s/,/\',\'/g")
不要在sripts中使用backticks而不是baticks,请使用$()
考虑
LIST="$(sed "s/,/\',\'/g" <<< "$LIST")"
考虑
LIST="$(sed "s/,/\',\'/g" <<< "$LIST")"
您可以使用
awk
echo $LIST
(96634,IV14075295,TR14075685')
LIST=$(awk '{gsub(/,/,q"&"q)};gsub(/\(/,"&"q)1' q="'" <<< $LIST)
echo $LIST
('96634','IV14075295','TR14075685')
echo$LIST
(96634,IV14075295,TR14075685’)
LIST=$(awk'{gsub(/,/,q“&”q)};gsub(/\(/,“&”q)1'q=“”””您可以使用awk
echo $LIST
(96634,IV14075295,TR14075685')
LIST=$(awk '{gsub(/,/,q"&"q)};gsub(/\(/,"&"q)1' q="'" <<< $LIST)
echo $LIST
('96634','IV14075295','TR14075685')
echo$LIST
(96634,IV14075295,TR14075685’)
LIST=$(awk'{gsub(/,/,q“&”q)};gsub(/\(/,“&”q)1'q=“”””,但我的问题是为什么转义字符不能使用单引号:)不要使用旧的和过时的backtic,请使用以下括号:LIST=$(echo“$LIST”| sed“s/,/\”,\“/g”)
。和双引号变量以保留新行等@Bharat通过运行这两个命令echo'\'''''
和echo'\'
,可以看出区别。Sed使用基本正则表达式。第一个echo命令不起作用,因为解释器在看到第二个'
后,会将其视为字符串结束,而第二个“
之前的转义字符被视为文字。同样,在sed上也会执行相同的操作。@AvinashRaj这是真的,但我使用管道将回音的输出重定向到sed,我在回音中没有使用任何转义字符。我指的是上面注释中的回音命令,而不是您问题中的命令。但我的问题是为什么转义字符不能使用单引号:)不要使用旧的和过时的反引号,请使用如下括号:LIST=$(echo“$LIST”| sed“s/,/\”,\“/g”)
。和双引号变量以保留新行等@Bharat通过运行这两个命令echo'\'''''
和echo'\'
,可以看出区别。Sed使用基本正则表达式。第一个echo命令不起作用,因为解释器在看到第二个'
后,会将其视为字符串结束,而第二个“
之前的转义字符被视为文字。同样,在sed上也会执行相同的操作。@AvinashRaj这是正确的,但我使用管道将回音的输出重定向到sed,我没有在回音中使用任何转义字符。我指的是上面注释中的回音命令,而不是您问题中的命令。这只是Avinash帖子,相同的sed
仅移动输入。并且第一个元素不被引用。它可以是重复的回复,但是+1提及使用应该是一个编辑,而不是一个新的答案。此外,如果不清楚,被删除的用户实际上不是一个被删除的用户。这只是Avinash帖子的副本,相同的sed
仅移动d输入。第一个元素没有被引用。它可以是重复的回复,但是+1用于提及使用应该是一个编辑,而不是一个新的答案。此外,如果不清楚,被删除的用户实际上不是被删除的用户。不要使用旧的和过时的backtics,使用括号var=$(code)
。始终使用双引号引变量echo“$LIST”
(可以不将一个变量双引号引为单行变量,但这不是一个好的做法)不要使用旧的和过时的backtic,使用括号var=$(code)
。始终使用双引号引变量echo“$LIST”
(可以不在单行变量中双引号,但这不是一个好做法)