我想将每行的第一个字母转换为小写,直到文件末尾。如何使用shell脚本执行此操作?
我试过了:
plat=`echo $plat |cut -c1 |tr [:upper:] [:lower:]``echo $plat |cut -c2-`
但这只会将第一个字符转换为小写字母。
我的文件如下:
Apple
Orange
Grape
预期结果:
apple
orange
grape
答案 0 :(得分:8)
您可以使用sed
:
sed -e 's/./\L&/' Shell.txt
(可能更安全
sed -e 's/^./\L&\E/' Shell.txt
如果你想延长它。)
答案 1 :(得分:2)
尝试:
plat=`echo $plat |cut -c1 |tr '[:upper:]' '[:lower:]'``echo $plat |cut -c2-`
答案 2 :(得分:2)
Pure Bash 4.0+,参数替换:
>"$outfile" # empty output file
while read ; do
echo "${REPLY,}" >> "$outfile" # 1. character to lowercase
done < "$infile"
mv "$outfile" "$infile"
答案 3 :(得分:0)
这是一个仅使用POSIX sed功能的单个sed命令:
sed -e 'h;s,^\(.\).*$,\1,;y,ABCDEFGHIJKLMNOPQRSTUVWXYZ,abcdefghijklmnopqrstuvwxyz,;G;s,\
.,,'
这两行是第一行,以反斜杠结尾以引用换行符。