使用 SED 将特定列的小写转换为大写
Use SED to convert specific column lower to upper case
我必须只用一个 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/'
我很想看懂命令,但是我很迷茫为什么要用"\"或者怎么读。
您可以使用
sed 's/^\(\([^,]*,\)\{3\}\)\([^,]*\)/\U/' # POSIX BRE
sed -E 's/^(([^,]*,){3})([^,]*)/\U/' # 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\}\)\([^,]*\)/\U/' <<< "$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 组:逗号以外的零个或多个字符。
这可能适合您 (GNU sed):
sed 's/[^,]*/\U&/4' file
大写第四组non-commas.
如果不是 headers,请使用:
sed '1!s/[^,]*/\U&/4' file
我必须只用一个 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/'
我很想看懂命令,但是我很迷茫为什么要用"\"或者怎么读。
您可以使用
sed 's/^\(\([^,]*,\)\{3\}\)\([^,]*\)/\U/' # POSIX BRE
sed -E 's/^(([^,]*,){3})([^,]*)/\U/' # 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\}\)\([^,]*\)/\U/' <<< "$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 组:逗号以外的零个或多个字符。
这可能适合您 (GNU sed):
sed 's/[^,]*/\U&/4' file
大写第四组non-commas.
如果不是 headers,请使用:
sed '1!s/[^,]*/\U&/4' file