Unix字段在输出查询中为空

时间:2013-06-03 08:14:05

标签: unix find field ksh

当我制作此代码时:

ENDROW=""
while read ENDROW;
do
temp=${ENDROW##*#@;}          field1=`printf '"%s"\n' "${temp%%#@;*}"
#Here the insert >> ${sqlfile}

并查看${sqlfile}输出字段为空...似乎找到分隔符之间的字段的代码在找到第一个分隔符时完成,然后不再继续。为什么呢?

1 个答案:

答案 0 :(得分:2)

根据你在评论中指出的输入:

$ cat file
#@
field1#@
field2#@
field3#@
field4#@
field5

这可行:

while read ENDROW
do
  echo ${ENDROW%*#@}
done < file

也就是说,您的替换必须使用%(从后面剥离......)而不是##(从前面剥离......)。

测试

$ while read ENDROW; do echo ${ENDROW%*#@}; done < file

field1
field2
field3
field4
field5

在您的情况下

#ENDROW="" #is not necessary
while read ENDROW;
do
  temp=${ENDROW%*#@}
  field1=$(printf '"%s"\n' "$temp")
#Here the insert >> ${sqlfile}

阅读有关bash替换的更多信息:
- wooledge.org - How can I use parameter expansion? How can I get substrings? How can I get a file without its extension, or get just a file's extension?
- Shell Command Language - 2.6.2 Parameter Expansion