我有一个名为input的变量,它是空格分隔的,我想用冒号去掉字符串并得到第三个元素。
input=a:b:c 1:2:3 x:y:z output=c 3 z
答案 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
为了打印每个字段中的每个第三个字符,我们必须使用分隔符。 在这种情况下,最明显的一个是冒号,但也必须考虑字段之间的空间。然后打印每一个......