如果我有一个stringvariables谁的价值是"john is 17 years old"
我如何使用空格作为分隔符来标记这个? 我会用awk
吗?
使用shell的自引用变量的自动标记:
$ string="john is 17 years old" $ for word in $string; do echo "$word"; done john is 17 years old
如果要更改分隔符,可以设置$IFS
变量,它代表内部字段分隔符。 $IFS
的默认值是" \t\n"
(空格,制表符,换行符)。
$ string="john_is_17_years_old" $ (IFS='_'; for word in $string; do echo "$word"; done) john is 17 years old
(请注意,在第二个例子中,我在第二行添加了括号,这就创建了一个sub-shell,所以对$IFS
的更改不会持久,通常不会永久更改$IFS
因为它可能会造成严重的后果毫无防备的shell命令。)
$ string="john is 17 years old" $ tokens=( $string ) $ echo ${tokens[*]}
对于其他分隔符,如';'
$ string="john;is;17;years;old" $ IFS=';' tokens=( $string ) $ echo ${tokens[*]}
$ string="john is 17 years old" $ set -- $string $ echo $1 john $ echo $2 is $ echo $3 17
你可以尝试这样的事情:
#!/bin/bash n=0 a=/home/file.txt for i in `cat ${a} | tr ' ' '\n'` ; do str=${str},${i} let n=$n+1 var=`echo "var${n}"` echo $var is ... ${i} done