我有一个bash脚本,它基于标识符从目录中的文件中提取并填充sqlite3表。问题在于,在填充表之前,我需要向拉出的字符串中添加字符。我想在变量之前和之后添加字符,在变量之前添加似乎可行,但是由于某种原因,我很难添加到末尾。我正在尝试使用awk和printf添加这些字符,并且我尝试仅连接字符串,但是两种解决方案都无法正常工作。
带有awk和printf的脚本是:
#!/bin/bash
sqlite3 review.sql "CREATE TABLE Review(Review_ID INTEGER PRIMARY KEY, Author TEXT, Date TEXT);"
path="/home/drew/Downloads/testcases/*"
for i in $path
do
total=$(grep -c '<Author>' $i)
count=1
while [ $count -le $total ]
do
date=$(grep -m$count '<Date>' $i | sed 's#<Date>##' | tail -n1)
author=$(grep -m$count '<Author>' $i | sed 's#<Author>##' | tail -n1 | awk '{printf "- %s -", $1}')
echo $author
((count++))
done
done
我不确定,但是我觉得我不需要使用printf向它添加回显,但是没有它,什么也不会打印。通过回显,我得到以下输出:
-Jeanjakey
- kareem -
- may -
- RW53 -
-Marilyn1949
-AuntSusie006
-madmatriarch
-strollaround
-lulubaby
-tomu023
-julcarl
-slass
这似乎有些用,但是空格消失了,姓氏消失了,并且似乎对不同的输入做了不同的事情。通过字符串连接,我使用脚本:
#!/bin/bash
sqlite3 review.sql "CREATE TABLE Review(Review_ID INTEGER PRIMARY KEY, Author TEXT, Date TEXT);"
path="/home/drew/Downloads/testcases/*"
for i in $path
do
total=$(grep -c '<Author>' $i)
count=1
while [ $count -le $total ]
do
date=$(grep -m$count '<Date>' $i | sed 's#<Date>##' | tail -n1)
author2="- "
author2+=$(grep -m$count '<Author>' $i | sed 's#<Author>##' | tail -n1)
author2+=" -"
echo $author
((count++))
done
done
我得到输出:
-Jeanjakey
-kareem jabron
-may flow she
-RW53
-Marilyn1949
-AuntSusie006
-madmatriarch
-strollaround
-lulubaby
-tomu023
-julcarl
-slass
和字符串重新分配:
author2=$(grep -m$count '<Author>' $i | sed 's#<Author>##' | tail -n1)
author2="- $author2 - "
给出相同的输出。