我必須只用一個 sed 命令將第 4 列轉換為大寫。
user,gender,age,native_lang,other_lang
0,M,19,finnish,english swedish german
1,M,30,urdu,english
2,F,26,finnish,english swedish german
3,M,20,finnish,english french swedish
4,F,20,finnish,english swedish
這是我最好的動作,但要更改所有列。
sed -e 's/\(.*\)/\U\1/'
我真的很想了解命令,但我真的迷失了為什么要使用“\”或如何閱讀它。
uj5u.com熱心網友回復:
您可以使用
sed 's/^\(\([^,]*,\)\{3\}\)\([^,]*\)/\1\U\3/' # POSIX BRE
sed -E 's/^(([^,]*,){3})([^,]*)/\1\U\3/' # POSIX ERE
查看在線演示:
s='user,gender,age,native_lang,other_lang
0,M,19,finnish,english swedish german
1,M,30,urdu,english
2,F,26,finnish,english swedish german
3,M,20,finnish,english french swedish
4,F,20,finnish,english swedish '
sed 's/^\(\([^,]*,\)\{3\}\)\([^,]*\)/\1\U\3/' <<< "$s"
輸出:
user,gender,age,NATIVE_LANG,other_lang
0,M,19,FINNISH,english swedish german
1,M,30,URDU,english
2,F,26,FINNISH,english swedish german
3,M,20,FINNISH,english french swedish
4,F,20,FINNISH,english swedish
詳情:
^- 字串的開始(([^,]*,){3})- 第 1 組:除逗號和逗號之外的任何零個或多個字符的三個重復([^,]*)- 第 3 組:除逗號之外的零個或多個字符。
uj5u.com熱心網友回復:
這可能對你有用(GNU sed):
sed 's/[^,]*/\U&/4' file
大寫第四組非逗號。
如果不是標題,請使用:
sed '1!s/[^,]*/\U&/4' file
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/368549.html
上一篇:洗掉txt檔案中的換行符
