列表

详情


SHELL22. 处理文本

描述

假设我们有一个nowcoder.txt,假设里面的内容如下
111:13443
222:13211
111:13643
333:12341
222:12123
现在需要你写一个脚本按照以下的格式输出
[111]
13443
13643
[222]
13211
12123
[333]
12341

原站题解

Bash 解法, 执行用时: 2ms, 内存消耗: 512KB, 提交时间: 2021-12-20

# awk -F ":" '{
#     res[$1] = (res[$1] == "" ? $2 : (res[$1] "\n" $2))
# }END{
#     for(k in res){
#         print "["k"]"
#         print res[k]
#     }
# }'

declare -A map
while read line
    do
        arr=(${line/:/ })
        map["${arr[0]}"]="${map["${arr[0]}"]}${arr[1]}\n"
    done < nowcoder.txt
k=0
for i in ${!map[*]}
    do
        [ $k -eq 0 ] && k=1 && tmp="[$i]\n${map[$i]}" && continue
        printf "[$i]\n${map[$i]}"
    done
printf "$tmp"

Bash 解法, 执行用时: 3ms, 内存消耗: 400KB, 提交时间: 2021-11-25

declare -A map
while read line
    do
        arr=(${line/:/ })
        map["${arr[0]}"]="${map["${arr[0]}"]}${arr[1]}\n"
    done < nowcoder.txt
k=0
for i in ${!map[*]}
    do
        [ $k -eq 0 ] && k=1 && tmp="[$i]\n${map[$i]}" && continue
        printf "[$i]\n${map[$i]}"
    done
printf "$tmp"

Bash 解法, 执行用时: 3ms, 内存消耗: 408KB, 提交时间: 2022-04-13

#!/bin/bash
#!/bin/awk
k=0;
declare -A map
while read line
    do
        arr=(${line/:/ })
        map["${arr[0]}"]="${map["${arr[0]}"]}${arr[1]}\n"
    done<nowcoder.txt
for i in ${!map[*]}
    do
        [ $k -eq 0 ] && k=1 && tmp="[$i]\n${map[$i]}" && continue
        printf "[$i]\n${map[$i]}"
    done
printf "$tmp"

Bash 解法, 执行用时: 3ms, 内存消耗: 420KB, 提交时间: 2022-02-14

#! /bin/bash

declare -A map

while read line
do
    arr=(${line/:/ })
    map["${arr[0]}"]="${map["${arr[0]}"]}${arr[1]}\n"
done
k=0
for i in ${!map[*]}
do
    [ $k -eq 0 ] && k=1 && tmp="[$i]\n${map[$i]}" && continue
    printf "[$i]\n${map[$i]}"
done
printf "$tmp"

Bash 解法, 执行用时: 3ms, 内存消耗: 424KB, 提交时间: 2022-03-02

# awk -F ":" '{
#     res[$1] = (res[$1] == "" ? $2 : (res[$1] "\n" $2))
# }END{
#     for(k in res){
#         print "["k"]"
#         print res[k]
#     }
# }'

declare -A map
while read line
    do
        arr=(${line/:/ })
        map["${arr[0]}"]="${map["${arr[0]}"]}${arr[1]}\n"
    done < nowcoder.txt
k=0
for i in ${!map[*]}
    do
        [ $k -eq 0 ] && k=1 && tmp="[$i]\n${map[$i]}" && continue
        printf "[$i]\n${map[$i]}"
    done
printf "$tmp"

上一题