Вы можете удалить первую строку с помощью sed 1d
Вы можете создать список значений с помощью
sql=$(
echo "$line" | sed "
s/'/''/g
s/[[:space:]]\+/','/ # 1
s/[[:space:]]\+/','/ # 2
s/[[:space:]]\+/','/ # 3
s/[[:space:]]\+/','/ # 4
s/[[:space:]]\+/','/ # 5
s/[[:space:]]\+/','/ # 6
s/[[:space:]]\+/','/ # 7
s/[[:space:]]\+/','/ # 8
s/[[:space:]]\+/','/ # 9
s/[[:space:]]\+/','/ # 10
s/^/INSERT INTO table_name VALUES ('/
s/$/');/
"
)
#!/bin/bash
while read line;
do
echo $(echo $line | awk -F ';' '{print $NF}')
done < test.txt
Это простой скрипт, который будет принимать каждую строку test.txt
в качестве входных данных и будет печатать последний элемент, разделенный ;
.
sed 's/.*;//' < test.txt
Удаляет все до последнего ;
в каждой строке.
Или сawk
:
awk -F';' '{print $NF}' < test.txt
Если вы заранее знаете количество полей, вы можете использовать cut
. Например, если есть 4 поля:
cut -d';' -f4 < test.txt
Однако имейте в виду, что если в строке менее 4 полей, то будет возвращена пустая строка , кроме , если в строке только одно поле (нет ;
, ), в этом случае будет выведена полная строка (первого поля ). Известная ошибка в cut
.
Или в баш:
#!/bin/bash
while read line ; do
echo ${a##*;}
done