Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 查找匹配的`'';使用sed时_Bash_Sed_Sh - Fatal编程技术网

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”
(可以不在单行变量中双引号,但这不是一个好做法)