将文件内容转换为大写

时间:2019-09-15 23:27:57

标签: linux bash shell

因此,我有一个名为“ concat”的shell脚本,该脚本当前接受命令行参数并打印在命令行上命名的文件的内容。现在,我需要创建一个名为“ concatconvert”的脚本,该脚本将调用“ concat”脚本,获取文件内容并将其转换。

以下是我的脚本“ concat”的代码:

#!/bin/bash

if [ $# -eq 0 ]; then
printf "Usage: concat FILE ... \nDescription: Concatenates FILE(s) 
to standard output separating them with divider -----.\n" >&2
exit 1
fi

for var in "$@"
do
    if [[ ! -e "$var" ]]; then
            printf "One or more files does not exist\n" >$2
            exit 1
    fi
done

for var in "$@"
do
    if [ -f "$var" ]; then
            cat $var
            printf -- "-----\n"
    fi
done
exit 0

我将使用来呼叫“ concat”

#!/bin/bash
./concat

在concatconvert脚本中。

Concatconvert将接受参数“ -u”和“ -l”

最终脚本将以以下方式执行:

./concatconvert -u test1.txt test2.txt
  

-u将文件内容转换为大写。

例如,"This is a test"变为"THIS IS A TEST"

  

-l将文件内容转换为小写。

例如,"This is a test"变为"this is a test"

一次只能提供一个选项。 我不太确定从哪里开始。感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您应该使用@jenesaisquoi提到的tr命令。

  

UNIX中的tr命令是用于翻译或   删除字符。

要使用它来将所有内容更改为小写字母,将是:

echo "This is Test" | tr [:upper:] [:lower:]
this is test

要使用它来将所有内容更改为大写命令,将是:

echo "This is Test" | tr [:lower:] [:upper:]
THIS IS TEST

要将其用于文件,请使用以下命令:

tr '[:upper:]' '[:lower:]' < filename