2012-04-04 177 views
7

我需要將文件中每行的第一個字母改爲大寫,例如將文件中每行的第一個字母改爲大寫

the bear ate the fish. 
the river was too fast. 

將成爲:

The bear ate the fish. 
The river was too fast. 
  • 文檔中包含一些特殊的字母:A,A,A,A,ǎ,A,B,C,d,E,E,E, ,ě,ē,,,,,,,ǒ,ǒ,,,,,ǐ,,,,,ǐ,ī, r,s,t,u,u,uu,uu,uu,ui,ui,u,v,w,x,y和z。
  • 這些字母的大寫形式是:A,A,A,A,B,C,D,E,E,E,E,F,G,H,I,I ,,Ì,Ǐ,Ī,,,,,,,,,,,,,Ō,,,Ò,Ò,,,Ǔ,Ǔ,Ò,Ǔ,Ǔ ,,Ǘ,Ǜ,Ǚ,Ǖ,Ū,V,W,X,Y和Z.

如何將文件中每行的第一個字母更改爲大寫?

+1

我認爲工程師的意思是什麼編程語言。 PHP等。 – 2012-04-04 07:13:54

+0

BASH將是首選。 – Village 2012-04-04 07:15:07

+0

問題是標籤的「慶典」 ...... – 2012-04-04 07:15:09

回答

11

使用sed

sed 's/^\(.\)/\U\1/' yourfile > convertedfile 

一點解釋:

  • ^代表行的開始。
  • .匹配任何字符
  • \U轉換爲大寫
  • \(... \)指定要以後引用(如\1在這種情況下)的部分;圓括號將在這裏逃脫。

嘗試輸出到同一個文件重定向到一個命令(即> yourfile),你將失去你的數據。如果你想在同一個文件中替換,請查看joelparkerhenderson的答案。

2

要更改文件的地點:

sed -i -e 's/^\(.\)/\U\1/' file.txt 
+0

作品!而且,爲什麼我也得(警告??)錯誤:sed的:無法讀取:沒有這樣的文件或目錄? – bikashg 2013-06-06 13:46:03

+0

@bikashg你,因爲在我的answer-- sorry--我現在已經固定成爲一個錯字得到了錯誤。 – joelparkerhenderson 2013-06-09 05:54:44

5
pearl.311> cat file1 
linenumber11 
linenumber2 
linenumber1 
linenumber4 
linenumber6 
pearl.312> awk '{print toupper(substr($0,1,1))""substr($0,2)}' file1 
Linenumber11 
Linenumber2 
Linenumber1 
Linenumber4 
Linenumber6 
pearl.313> 
+0

適用於OSX。謝謝。 – Sufian 2014-05-23 10:50:10

+0

這只是爲我工作在OSX – 2018-02-18 03:24:35

1

你可以把你的特殊字符來代替A-Z和A-Z

function up { local c="$1" ; echo -e "$c" | tr '[a-z]' '[A-Z]' ; } 
while read line 
do 
    echo $(up ${line:0:1})${line:1} 
done 
5

有與s/^\(.\)/\U\1/幾個SED的答案。GNU sed的也有\u指令只改變一個字母爲大寫,所以

sed 's/./\u&/' 

雖然如果一行中的第一個字符是一個空間,你不會看到一個大寫字母,所以

sed 's/[[:alpha:]]/\u&/' 
+0

我會說這是更好的答案之一。 – 2013-12-04 12:49:08

0

bash

while read x ; do echo "${x^*}" ; done <inputfile> outputfile 

測試/演示(刪除後的代碼更完整的輸出):

for f in a, a, á, à, ǎ, ā, b, c, d, e, e, é, è, ě, ē, f, g, h, i, i, í, ì, ǐ, ī, \ 
     j, k, l, m, n, o, o, ó, ò, ǒ, ō, p, q, r, s, t, \ 
     u, u, ú, ù, ǔ, ü, ǘ, ǜ, ǚ, ǖ, ū, v, w, x, y, and z. 
do echo "$f foo bar." ; done | 
while read x ; do echo "${x^*}" ; done | head -15 | tail -6 

輸出:

E, foo bar. 
E, foo bar. 
É, foo bar. 
È, foo bar. 
Ě, foo bar. 
Ē, foo bar.