Unix脚本以大写和小写打印文件

时间:2015-03-10 07:59:42

标签: bash shell unix scripting

我有一个包含5000条记录的文件,主要是像

这样的名字
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);

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

单个sed将完成这项工作。您不需要创建脚本。

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);

答案 2 :(得分: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或更高版本。