2015-03-10 1 views
1

У меня есть файл, который содержит 5000 записей в основном имена, какUnix сценария для печати файла в верхнем регистре и строчные

david 
mathew 
philip 

Ищу скрипт для чтения файла и создать ouptut как

insert into names_db values(david,DAVID); 
insert into names_db values(mathew,MATHEW); 
insert into names_db values(philip,PHILIP); 
+0

Если вы вставляете в базу данных, вам, вероятно, нужны эти цитаты: 'insert ... ('david', 'DAVID');' – fedorqui

ответ

1

Одиночный сед будет выполнять эту работу. Вам не нужно создавать сценарий.

sed 's/.\+/insert into names_db values(&,\U&);/g' file 

& относится ко всем соответствующим символам. \U& превратит все совпадающие символы в верхний регистр.

ИЛИ

$ sed 's/.*/insert into names_db values(&,\U&);/g' file 
insert into names_db values(david,DAVID); 
insert into names_db values(mathew,MATHEW); 
insert into names_db values(philip,PHILIP); 
3

Использование AWK:

awk '{printf "insert into names_db values(%s,%s);\n", tolower($0), toupper($0)}' file 
insert into names_db values(david,DAVID); 
insert into names_db values(mathew,MATHEW); 
insert into names_db values(philip,PHILIP); 
0

Это очень простое решение использует только Bash для случая изменения во время расширения параметра:

#!/bin/bash 

stmt="insert into names_db values(%s,%s);\n" 

while read name 
do 
    printf "$stmt" "$name" "${name^^}" 
done < test.txt 

Поиск bash(1) для \^\^ для получения дополнительной информации. Обратите внимание, что требуется Bash 4.x или выше.

Смежные вопросы