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"
答案 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 }'