Bash 从字符串中删除空格
假设我有这样一个字符串:Bash 从字符串中删除空格,bash,Bash,假设我有这样一个字符串: string=" this is a string " 删除重复空白并获取以下字符串的最简单方法是什么: string="this is a string" 该行适用于给定的示例: awk '$1=$1' <<< $string awk'$1=$1'这一行应该适用于给定的示例: awk '$1=$1' <<< $string awk'$1=$1'逐个字符遍历字符串。每当获得两个连续的空格时,将数组向后移动一个
string=" this is a string "
删除重复空白并获取以下字符串的最简单方法是什么:
string="this is a string"
该行适用于给定的示例:
awk '$1=$1' <<< $string
awk'$1=$1'这一行应该适用于给定的示例:
awk '$1=$1' <<< $string
awk'$1=$1'逐个字符遍历字符串。每当获得两个连续的空格时,将数组向后移动一个字符逐个字符遍历字符串。每当获得两个连续的空白时,将数组向后移动一个字符无需使用外部二进制文件,如Awk。你可以单独在Bash中完成
string=" this is a string "
IFS=' ' read -a __ <<< "$string"; string="${__[@]}"
echo "$string"
this is a string
或者只针对空格($'\x20'
)
不需要使用像Awk这样的外部二进制文件。你可以单独在Bash中完成
string=" this is a string "
IFS=' ' read -a __ <<< "$string"; string="${__[@]}"
echo "$string"
this is a string
或者只针对空格($'\x20'
)
使用echo的解决方案:
string=$(echo $string)
使用echo的解决方案:
string=$(echo $string)
让shell为您工作(假设IFS
的默认值)
让shell为您工作(假设IFS
的默认值)
比我的sed-e的//^*//g'-e的//*$//g'
要好得多,它只解决了三部分中的两部分+1@FredrikPihl它可以更短,但是我们仍然需要s/\+///g
谢谢!有没有一种不使用awk的方法来实现这一点?是的,其他工具,或者bash本身。我个人认为awk是最简单的@Doppelgangercat比我的sed-e的//^*//g'-e的//*$//g'
要好得多,它只解决了三部分中的两部分+1@FredrikPihl它可以更短,但是我们仍然需要s/\+///g
谢谢!有没有一种不使用awk的方法来实现这一点?是的,其他工具,或者bash本身。我个人认为awk是最简单的@Doppelgangercatecho$string为我提供了{{uu[@]}
bash版本4.2。45@FredrikPihl对不起,忘了美元。我将参数的名称从string
。是的,我在点击send后2秒看到了这一点。数组和IFS变量的使用很好,但您必须同意awk解决方案更干净:-)@FredrikPihl只会更慢,并且需要一个子shell:)echo$string为我提供了{uu[@}
bash 4.2版。45@FredrikPihl对不起,忘了美元。我将参数的名称从string
。是的,我在点击send后2秒看到了这一点。数组和IFS变量的使用很好,但您必须同意awk解决方案更干净:-)@FredrikPihl速度较慢,并且需要一个子shell:)
string=" this is a string "
arr=($string)
printf -v string2 "%s" "${arr[*]}"
echo _${string2}_
_this is a string_