在bash中如何去除字符串

时间:2016-05-31 08:56:26

标签: bash

我有一个名为input的变量,它是空格分隔的,我想用冒号去掉字符串并得到第三个元素。

input=a:b:c 1:2:3 x:y:z

output=c 3 z

5 个答案:

答案 0 :(得分:3)

您可以使用输入字符串填充BASH数组,然后将所有内容替换为最后一个冒号:

input='a:b:c 1:2:3 x:y:z'
read -ra arr <<< "$input"

echo "${arr[@]/*:}"
c 3 z

答案 1 :(得分:3)

$ grep -oP '(?<=:).(?=\s|$)' <<< 'a:b:c 1:2:3 x:y:z' | paste -s -d ' '
c 3 z

grep搜索其背后有:的任何字符(使用正向lookbehind断言)和\s(空格)或$(行尾)(使用积极的前瞻性断言)。

对于这些字符中的每一个,我们将它串行粘贴(将行转换为具有值的行),并使用分隔符作为空格。

答案 2 :(得分:2)

您可以使用for循环和cut command

for values in $input; do
    echo "$values" | cut -d ':' -f 3
done

答案 3 :(得分:2)

echo a:b:c 1:2:3 x:y:z | awk -F: '{print $3,$5,$7}' |awk '{print $1,$3,$5}'

OR

echo a:b:c 1:2:3 x:y:z | tr ':' ' ' |awk '{print $3,$6,$9}'

答案 4 :(得分:0)

pass

为了打印每个字段中的每个第三个字符,我们必须使用分隔符。 在这种情况下,最明显的一个是冒号,但也必须考虑字段之间的空间。然后打印每一个......