shell 读取并处理文本信息

#!/bin/sh
#$0 是脚本的名字 $1是第一个参数,$2是第二个参数,$#是参数的个数
if [ $1 == "-race" ]
then
    type=1
elif [ $1 == "-gender" ]
then
    type=2
elif [ $1 == "-smile" ]
then
    type=3
elif [ $1 == "-age" ]
then
    type=4
else
    echo "input aruments: extrac_att.sh -type att"
    exit
fi


type_name=$1
echo "type is: $type"
echo "type_name is: $type_name"
type_num=$2


if [ $type_num == 0 ]
then 
    suffix="yellow_race"
elif [ $type_num == 1 ]
then
    suffix="white_race"
elif [ $type_num == 2 ]
then
    suffix="black_race"
elif [ $type_num == 3 ]
then
    suffix="India_Arabia_race"
else
    suffix="other_race"
fi


echo "type_num is $type_num"

#IFS(Internal Field Separator)是一个内部的环境变量,也是默认的文本分隔符,包括空格符(space character)、制表符(Tab)和换行符(\newline)
FINAL_IFS=$IFS  #backup the original IFS
OLD_IFS=$IFS
IFS=$'\n'   #set the new IFS

type_name=${type_name#*-}
echo  $type_name.$type_num.$suffix
if [ -f "$type_name.$type_num.$suffix" ]
then
    `rm $type_name.$type_num.$suffix`
fi



         path_desti="$type_name.$type_num.$suffix"".folder"
         
         if [ -d "$path_desti" ]
         then
             `rm -r $path_desti`
         fi

         `mkdir $path_desti`

output_num=0
for line in `cat gt-race-gender-smile-age`#read one line per time
do
    IFS=$' ' #set the new IFS for sperate the line

    arr=($line)
#    echo ${#arr[@]}
#    echo ${arr[$type]}
#    echo $type_num

    if [ "${arr[$type]}" == "$type_num" ] && [ "${arr[1]}" != "NULL" ] && [ "${arr[2]}" != "NULL" ] && [ "${arr[3]}" != "NULL" ]
    then
        echo $line
#       echo $type_name
#        echo $type_num
#        type_name=${type_name#*-}
#        echo "type_name is :$type_name"
         echo ${arr[0]}
         path="../${arr[0]}"
         


     #    path_desti="$type_name.$type_num.$suffix"".folder"
         
    #     if [ -d "$path_desti" ]
   #      then
  #           `rm -r $path_desti`
 #        fi
#
 #        `mkdir $path_desti`
#
         `cp $path $path_desti`
         echo $path

#        exit
        echo $line >> "$type_name.$type_num.$suffix"
        output_num=$(expr $output_num + 1)
#        exit
    fi




    IFS=$'\n'

done
echo "$type_name.$suffix is: $output_num"
echo "$type_name.$suffix is: $output_num" >>  "static_num"
IFS=$FINAL_IFS

### 回答1: 可以使用以下命令读取 text 文件: ``` cat text.txt ``` 这将会将 text.txt 中的内容全部输出到终端。 如果想要将文件内容赋值给一个变量,可以使用下面的命令: ``` content=$(cat text.txt) ``` 这样,文件内容就会被赋值给变量 `content` 了。 你也可以使用 `sed` 命令来读取文件的一部分内容。例如,要获取 text.txt 第 3 行的内容,可以使用如下命令: ``` line=$(sed -n '3p' text.txt) ``` 这样,第 3 行的内容就会被赋值给变量 `line` 了。 ### 回答2: Shell 是一种命令语言和脚本语言,常用于在操作系统的命令行界面上执行各种任务。它可以通过一些命令来读取处理文本文档。 在Shell 中,可以使用一些常见的命令来读取文本文档。例如,我们可以使用 `cat` 命令来将整个文本文档的内容打印到屏幕上,或者使用 `head` 或 `tail` 命令来只显示文本文档的前几行或后几行。另外,还可以使用 `grep` 命令来根据匹配模式进行搜索,并只输出匹配的行。 除了这些命令之外,还有一些其他的命令可以用于处理文本文档。例如,`wc` 命令可以统计文件的行数、单词数和字节数;`sort` 命令可以对文本文档进行排序;`sed` 命令可以用于替换和编辑文本内容。 除了直接使用这些命令之外,还可以通过 Shell 脚本来实现更加复杂的文本处理Shell 脚本是一系列遵循特定语法规则的命令和控制结构的集合,可以用于自动化地处理文本文档。通过将一系列命令按照需要的顺序编写到脚本中,并在 Shell 中执行脚本,可以完成各种文本处理任务。 总之,Shell 可以通过一系列命令和脚本来读取处理文本文档,提供了一种方便而高效的方式来操作和处理文本数据。 ### 回答3: Shell 是一种命令行解释器,可以用于执行各种命令和脚本。我们可以使用 Shell 读取 text 文本读取文本的方法有很多,以下是其中一种常见的方法: 1. 使用 Shell 内置命令 cat 来读取文本,语法如下: ``` cat 文件名 ``` 这将直接将文本的内容输出到终端。 例如,要读取名为 text.txt 的文本文件,我们可以使用以下命令: ``` cat text.txt ``` Shell 将会将 text.txt 文件的内容输出到终端上。 除了 cat 命令之外,还有其他一些用于读取文本的命令,比如 more、less、head 和 tail。它们都有各自的特点和用途。例如,more 和 less 命令可以一次显示一屏的内容,并且可以通过按键翻页。head 命令可以显示文件的前几行,而 tail 命令可以显示文件的后几行。 在使用这些命令读取文本时,我们可以结合使用其他的 Shell 命令来对文本内容进行处理和分析,如 grep、awk 或 sed 等,以实现更多复杂的操作。这些命令可以帮助我们在读取文本时进行搜索、过滤、替换等操作,使得文本处理更加灵活和高效。 总之,Shell 提供了多种命令来读取文本,我们可以根据具体的需求选择合适的命令来进行操作。通过合理使用这些命令,我们可以方便地读取处理文本文档中的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值