在bash shell脚本中将字符串转换为字符串的小写部分

use*_*630 3 shell uppercase

我有一个file.txt,文件的每一行都是这样的:

ABLED   EY B AH L D
ABLER   EY B AH L ER
Run Code Online (Sandbox Code Playgroud)

我希望每行的第二部分:EY B AH L D或者EY B AH L ER,例如,小写,保持其余的大写.我该怎么做?

非常感谢你提前.

Joh*_*ica 7

while read first second; do
    second=$(echo "$second" | tr [:upper:] [:lower:])
    printf '%s\t%s\n' "$first" "$second"
done < file.txt
Run Code Online (Sandbox Code Playgroud)

输出:

ABLED   ey b ah l d
ABLER   ey b ah l er
Run Code Online (Sandbox Code Playgroud)

另外两种方法可以在没有调用的情况下在KornShell,pdksh或Bash中执行此操作 tr

在变量上设置"小写"标志(仅限KornShell和兼容的shell):

typeset -l second
while read first second; do
    printf '%s\t%s\n' "$first" "$second"
done < file.txt
Run Code Online (Sandbox Code Playgroud)

使用Bash的大小写修改参数扩展修饰符(仅限Bash!):

while read first second; do
    printf '%s\t%s\n' "$first" "${second,,}"
done < file.txt
Run Code Online (Sandbox Code Playgroud)