删除bash中的空白(无子进程)
我在变量中有一个字符串,希望删除所有空格。我只想用bash来做。目前,我只删除空格,但我想删除标签也在一个步骤删除bash中的空白(无子进程),bash,whitespace,string-matching,removing-whitespace,Bash,Whitespace,String Matching,Removing Whitespace,我在变量中有一个字符串,希望删除所有空格。我只想用bash来做。目前,我只删除空格,但我想删除标签也在一个步骤 string="test string 1" # first whitespace in string is tab second is space echo ${string// /} # the whitespace between // is space; output: test string1 echo ${string// /} # the whitespace
string="test string 1" # first whitespace in string is tab second is space
echo ${string// /} # the whitespace between // is space; output: test string1
echo ${string// /} # the whitespace between // is tab; output: teststring 1
宽空白是制表符。第三个/
可以删除
@anubhava我从文件中逐行读取这些字符串,因此字符串中没有换行符。因此,删除所有空格不会造成任何伤害。与其尝试替换空格,不如使用与任何空格匹配的字符类:
[:space://code>表示[\t\r\n\v\f]
,即它将匹配空格、制表符、回车符、换行符和换行符
如前所述,您可以使用character类[:blank://删除水平空白:
echo "${string//[[:blank:]]/}"
如果只想删除空格和制表符,请说:
echo "${string//[ $'\t']/}"
与其尝试替换空格,不如使用匹配任何空格的字符类:
[:space://code>表示[\t\r\n\v\f]
,即它将匹配空格、制表符、回车符、换行符和换行符
如前所述,您可以使用character类[:blank://删除水平空白:
echo "${string//[[:blank:]]/}"
如果只想删除空格和制表符,请说:
echo "${string//[ $'\t']/}"
两件事:在你的$string
中什么是tab,什么是空格?此外,尽管这对这种情况没有影响,但要正确查看输出,最好回显“$var”
@user2546460是否也要从字符串中删除换行符?两件事:在$string
中,什么是选项卡,什么是空格?另外,虽然这对这种情况没有影响,但要正确查看输出,最好回显“$var”
@user2546460是否也要从字符串中删除换行符?还有[:blank:://code>,它只是“水平”空格:@glennjackman谢谢。年龄的影响正在显现出来。我将更新答案以添加您提到的内容。还有[:blank://code>,它只是“水平”空格:@glennjackman谢谢。年龄的影响正在显现出来。我将更新答案以添加您提到的内容。