做个记录:1.用sed方法:
简单说明:
\w 相当于 [a-zA-Z0-9] ,\s 表示 任何空白字符(包括空格,制表等)。\U将后面的字符转换成大写,&指前面匹配的内容,上面sed的作用是将行首字母或者是后面每个单词的首字母转换成大写。
2.用awk方法:
- code1:
- awk '{for(i=1;i<=NF;i++) {printf "%s%s ", toupper(substr($i,1,1)),substr($i,2)};printf ORS}' file
简单说明:
toupper 内置函数将参数转换成大写,返回转换后的内容。substr 内置函数用来截取指定长度字符。如上面截取字段从第一个字符开始。长度为1的字符串。即第一个字符 然后返回截取后的字符,传给toupper。如果没加指定长度的话。就截取到最后。如substr($i,2)从第二个字符开始一直到最后。上面:将每个字段的首字母转换成大写后输出。最后在输出ORS (默认为换行)。
- code2:
- awk '{for(i=1;i<=NF;i++){gsub(/^\w/,toupper(substr($i,1,1)),$i)};print}' urlfile
简单说明:
将每个字段的首字母替换成大写,然后输出。substr函数的返回值作为toupper函数的参数。toupper函数的返回值有作为gsub函数的参数。
3.用perl的方法
- code1:
-
perl -pe '{s/\b\w/\u$&/g}' urlfile
简单说明:
\b 匹配每个单词边界。\u 将接在他后面的字符转换成大写。$& 相当于sed中&指前面匹配的内容。
- 这里-p 相当于下面一段代码:
-
-
LINE:
-
while (<>;) {
-
# your code goes here
-
} continue {
-
print or die "-p destination: $!\n";
-
}
即会自动打印$_中的内容。
- code2:
-
-
#!/usr/bin/perl
-
while(<>){
-
s/\b\w+\b/ucfirst($&)/eg;
-
print;
-
}
简单说明:
这里要说明的是e 这个修饰符使其替换部分能够用函数ucfirst 只将字符串的第一个字符变成大写 ,其实和上边差不多 只是这里在替换部分用到了perl的内置函数
阅读(13226) | 评论(0) | 转发(0) |