小编use*_*000的帖子

Shell脚本,用于显示文件和目录中每个单词的频率

我在采访中遇到了一个问题

Shell脚本,用于显示文件和目录中每个单词的频率

A
    - A1
        - File1.txt
        - File2.txt
    -A2
        - FileA21.txt
    -A3
        - FileA31.txt
        - FileA32.txt
B
    -B1
        - FileB11.txt
        - FileB12.txt
        - FileB13.txt
    -B2
        -FileB21.txt
Run Code Online (Sandbox Code Playgroud)

我相信通过理解目录A和B是两个单独的目录来理解这个问题,其中A1,A2和A3是A的子目录,B1和B2是B的子目录.所以我这样回答.

Find . ‘\(-name “A” –and –name “B”\)’ –type f –exec cat ‘{}’ \; | awk ‘{c[$1]++} END {for (i in c) print i, c[i]}’
Run Code Online (Sandbox Code Playgroud)

但我仍然得到一个反馈,上面的脚本不够好.给定的脚本有什么问题?

bash shell awk

5
推荐指数
1
解决办法
196
查看次数

shell 中文件一列中唯一单词的计数

我试图使用 shell 脚本找出文件一列中唯一单词的数量以及单词本身。这就是我正在做的事情。输入文件包含(文件名:gnc.txt,城市名称后换行):

Male,Tyrus,Seattle
Male,Sam,Seattle
Male,Meha,Seattle
Male,John,Seattle
Male,Sam,Beijing
Male,Meha,Paris
Male,Meha,Berlin
Run Code Online (Sandbox Code Playgroud)

第一步,我使用下面的 shell 命令找出了唯一名称的数量,即 4。

awk -F\, '{ if(!a[$2]) cnt++;a[$2]++;next}END{ print cnt }' gnc.txt
Run Code Online (Sandbox Code Playgroud)

下一步我想获取唯一名称的列表:即 Tyrus、Sam、Meha 和 John

有人可以帮助我如何更改上述命令吗?

bash shell awk

2
推荐指数
1
解决办法
4754
查看次数

同一线路上的回显输出

我正在尝试使用 bash 脚本中的 echo 命令在同一行上打印输出。Echo 命令在循环内给出,每次循环运行时,都会执行 echo 命令。但通常情况下,echo 每次执行时都会换行,但我希望每次执行时输出都在同一行。

这就是我的示例小代码的样子:

 #!/bin/bash
loop=1;
while [ $loop -lt 5 ];
do
echo "-"
let loop=loop+1
done
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 echo 命令的 -n 选项,但没有输出。我将 stmt - echo "-" 替换为 echo -n "-"。

所需的输出是:“-----”

有人可以帮我解决这个问题吗

bash shell

2
推荐指数
1
解决办法
3万
查看次数

标签 统计

bash ×3

shell ×3

awk ×2