㈠ linux,编写shell程序,将一个文件名作为程序的参数,把该文件中的英文字母全部转换成大写字母
如果没有指定命令行参数,则直接退出。
如果指定了命令行参数,就把该文件的英文字母转化为大写保存在.caps文件中。支持同时多个参数。
代码如下。
#!/bin/bash
if[$#-eq0]
then
exit0
fi
upper(){
tr'[a-z]''[A-Z]'<$1>$1".caps"
}
forfilein$*
do
upper$file
done
㈡ Linux中vi操作和NULL原型的问题
vim中大小写转化的命令是
gu或者gU
形象一点的解释就是小u意味着转为小写;大U意味着转为大写.
剩下的就是对这两个命令的限定(限定操作的行,字母,单词)等等
1、整篇文章大写转化为小写
打开文件后,无须进入命令行模式。键入:ggguG
解释一下:ggguG分作三段gg gu G
gg=光标到文件第一个字符
gu=把选定范围全部小写
G=到文件结束
2、整篇文章小写转化为大写
打开文件后,无须进入命令行模式。键入:gggUG
解释一下:gggUG分作三段gg gU G
gg=光标到文件第一个字符
gU=把选定范围全部大写
G=到文件结束
3、只转化某个单词
guw 、gue
gUw、gUe
这样,光标后面的单词便会进行大小写转换
想转换5个单词的命令如下:
gu5w、gu5e
gU5w、gU5e
4、转换几行的大小写
将光标定位到想转换的行上,键入:1gU 从光标所在行 往下一行都进行小写到大写的转换
10gU,则进行11行小写到大写的转换
以此类推,就出现其他的大小写转换命令
gU0 :从光标所在位置到行首,都变为大写
gU$ :从光标所在位置到行尾,都变为大写
gUG :从光标所在位置到文章最后一个字符,都变为大写
gU1G :从光标所在位置到文章第一个字符,都变为大写
第2个问题帮不上你, 分能给一半么?? 呵呵
㈢ linux tr 大小写转换后查看原文本无变化 新学Linux 求大神指教
tr 命令定义:从标准输入删除或替换字符,并将结果写入标准输出。
根据定义:(1)tr命令并不能对文件内容进行直接处理,所以仅tr命令不能修改文件内容;(2)文件内容要用tr处理,就需要作为tr的标准输入。你的命令里用的echo |或者 < 或者 cat |都是这个作用,就是把文件内容输出到标准输出并作为tr的标准输入,所以tr处理的仅仅是标准输出上的内容,并不是文件本身,所以文件内容不会改变;(3)tr处理后的内容是“写入标准输出”的,并没有写入源文件,所以需要其他命令把输出再写到某个文件,如输出重定向符>,可以把输出到标准输出上的内容重定向输出到某个文件,如“cat qwer | tr [a-z] [A-Z] >qwer2.txt”
㈣ linux 输入法大小写如何转换
shift+“” 大写
“” 小写
或CapsLock键
你是要这个么
㈤ Linux中批量把文件名大小写转换
linux中批量把文件名大小写转换一哥们从现场打来急电说现在有一个目录,目录下有上千个文件,现在需要把文件名由小写全部转化为大写。首先不能写脚本,那样的话还要教他用vi,
改权限,只能用命令了。字符转换嘛,当然想到的是
tr
:
www.dnjsb.com
for
file
in
*
;do
mv
$file
`echo
$file
|
tr
'a-z'
'A-Z'`;done过了一会儿这哥们又打电话说,扩展名不要改为大写的,保留为小写就行了。这样明显分段的事情当然要交给
awk
了:
for
file
in
*;do
mv
$file
`echo
$file
|
awk
-F
.
'{print
toupper($1).$2}'
`;done这样是可以把类似
a.txt
的文件修改了,但有多个扩展名的就没招了,比如
b.tar.gz,还好
awk
支持变量:
www.dnjsb.com
for
file
in
*;do
mv
$file
`echo
$file
|awk
-F
.
'
{
for
(i
=
1;
i
<=
NF;i++)
if
(i
==
1)
result
=
toupper($i);
else
result
+=
.$i;
print
$result;
}'
`;done但结果是错的,一个文件名也没有改变,查了下说gawk才支持toupper,
tolower,换成gawk
还是不对。最后没办法只好找个折衷的方法,先全部转化为大写,然后再将扩展名转回小写:for
file
in
*;
www.dnjsb.com
do
mv
$file
`echo
$file
|
sed
-e
s//.TXT//.txt/g
`;done但是/.并没有被转义成.,
而依然是代表任意字符,这样的话如果basename中含有扩展名就悲剧了。
试了几下发现这样才是转义的:
sed
-e
s/[.]TXT/.txt/g
`;ok.