我在采访中遇到了一个问题
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)
但我仍然得到一个反馈,上面的脚本不够好.给定的脚本有什么问题?
我试图使用 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 脚本中的 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 "-"。
所需的输出是:“-----”
有人可以帮我解决这个问题吗