所有人.

我有一个文件,其名称的格式为:

Name Name    Surname Surname

这是带有名称的文件

Nikola  KAZIKOVA
Pavel   MILAN GAZDIK
Nikolas Martin  STRUP
Nikola  GAZDIK
Nikola ČERNÁ
Nikola Martina ČERNÁ

我正在try 创建一个脚本,在每个名称旁边打印多个实例. 然而,我想不出该怎么数.

这是我的代码,我可以将文本加载到数组中,但我不知道如何计算名称.

#!/bin/bash

file=$1

if [[ -z $1 ]]
    then echo "ERROR: FILE NOT FOUND"
    exit
fi


# Read the file in parameter and fill the array named "array"
getArray() {
    array=() # Create array
    while IFS= read -r line # Read a line
    do
        array+=("$line") # Append line to the array
    done < "$1"
}

# Print the file (print each element of the array)
getArray $file
for e in "${array[@]}"
do
    IFS='   ' read -ra arr <<< "$e"
    echo "${arr[0]}" | grep -o "${arr[0]}"

done

这就是我想要达到的结果

   [4] Nikola  KAZIKOVA
   [1] Pavel   MILAN GAZDIK
   [1] Nikolas Martin  STRUP
   [4] Nikola  GAZDIK
   [4] Nikola ČERNÁ
   [4] Nikola Martina ČERNÁ

推荐答案

其中一个选项是:

while read -r f l ; do echo "[$(grep -w -c $f d.dat)] $f $l" ; done <d.dat

输出:

[4] Nikola KAZIKOVA
[1] Pavel MILAN GAZDIK
[1] Nikolas Martin  STRUP
[4] Nikola GAZDIK
[4] Nikola ČERNÁ
[4] Nikola Martina ČERNÁ

请注意,这并不是非常有效,因为循环中有grep.如果您的文件很大,那么您可能希望使用其他工具,如.awkpython.


awk个备选方案;

awk 'NR==FNR{A[$1]++}NR>FNR{for(i in A) {if(i==$1){printf "[%s] %s\n", A[i], $0}}}' d.dat d.dat

输出:

[4] Nikola  KAZIKOVA
[1] Pavel   MILAN GAZDIK
[1] Nikolas Martin  STRUP
[4] Nikola  GAZDIK
[4] Nikola ČERNÁ
[4] Nikola Martina ČERNÁ

Linux相关问答推荐

C++17:G++8.5版似乎无法正确生成无符号64位伪随机整数

X86_64程序集中的分段故障:系统调用问题

Docker 不保留 chown 用户设置

从 ALSA USB 硬件设备获取 USB 设备文件路径

BASH:在curl输出的每一行添加前缀

使用 AWK 过滤 Linux 输出

Bash 更新 yaml 文件中的图像值

使用 bash 中的数字对 RPM 内核字符串进行版本排序返回不正确的结果

在 Linux 下将 TCP 流量重定向到 UNIX 域套接字

从 shell 将多个 .sql 转储文件导入 mysql 数据库

如何在 linux ElementaryOS 中修复 Genymotion,但未找到错误CXXABI_1.3.8

Linux 上的 C++ 开发 - 我从哪里开始?

在没有 python 命令的情况下在终端中运行 python 脚本

在 shell 脚本的 for 循环中迭代行而不是单词

在 Linux 中的特定行向文件添加文本

如何从 Linux 内核模块的 init_module 代码创建设备 node ?

如何在redhat linux上安装maven

在 Docker 容器中运行的 JVM 的驻留集大小 (RSS) 和 Java 总提交内存 (NMT) 之间的差异

如何制作和应用SVN补丁?

在tmux中绑定Ctrl+Tab和Ctrl+Shift+Tab