将变量分隔为$ 1 $ 2 $ 3

时间:2011-04-20 09:02:38

标签: linux bash

sqlite3 pcheck.db "SELECT * FROM printers"

给了我:

 1|10.0.0.x|HP4250INK|public|hp LaserJet 4250|"CNHXXXXXX"|14457|"Sleep Mode"

我想把数据分开|变量$ 1到$ 8

这样可以像

一样输出
echo "$1 $3 $5"
echo "$2 $4 $6"

./ test.sh

1 HP4250INK hp Laserjet 4250
10.0.0.x public "CNHXXXXXX"

3 个答案:

答案 0 :(得分:9)

你可以在没有外部工具的情况下使用bash

output=$(sqlite3 pcheck.db "SELECT * FROM printers")
IFS="|"
set -- $output
echo $1
echo $2 #and so on

或使用数组

IFS="|"
output=($(sqlite3 pcheck.db "SELECT * FROM printers"))
echo ${output[0]}
echo ${output[1]} #and so on

答案 1 :(得分:2)

您可以使用

echo $YOUR_STRING | cut -d'|' -f1,3,5

表示前三个,

echo $YOUR_STRING | cut -d'|' -f2,4,6

其他三个。

答案 2 :(得分:1)

尝试使用awk:)

awk 'BEGIN { FS = "|" } ; { print $1 " " $3 " " $5 }'

或者:

awk 'BEGIN { FS = "|" } ; { printf "%s\t%st\%s\n%s\t%s\t%s", $1, $3, $5, $2, $4, $6 }'