Получите последний элемент строки, отделенного;

Вы можете удалить первую строку с помощью 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/$/');/
    "
)
0
05.12.2018, 13:36
3 ответа
#!/bin/bash
while read line;
 do
 echo $(echo $line | awk -F ';' '{print $NF}')
done < test.txt

Это простой скрипт, который будет принимать каждую строку test.txtв качестве входных данных и будет печатать последний элемент, разделенный ;.

0
28.01.2020, 02:18
sed 's/.*;//' < test.txt

Удаляет все до последнего ;в каждой строке.

Или сawk:

awk -F';' '{print $NF}' < test.txt

Если вы заранее знаете количество полей, вы можете использовать cut. Например, если есть 4 поля:

cut -d';' -f4 < test.txt

Однако имейте в виду, что если в строке менее 4 полей, то будет возвращена пустая строка , кроме , если в строке только одно поле (нет ;, ), в этом случае будет выведена полная строка (первого поля ). Известная ошибка в cut.

4
28.01.2020, 02:18

Или в баш:

#!/bin/bash

while read line ; do
    echo ${a##*;}
done
0
28.01.2020, 02:18

Теги

Похожие вопросы