㈠ 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.