Ubuntu Bash - 从文件中打印特定单词

Ubuntu Bash - 从文件中打印特定单词

我需要一些关于 bash 的帮助。我只学过 grep、awk、find、sed 等。

假设我有一个文件,people.txt在多行中每行都有不同的名称,但每行都会出现一个名称。例如:

Ln1 - chris butcher, sam witwickie, joseph stalin, king kunta

Ln2 - Thor, ironman, mariah carey, chris butcher

Ln3 - jen love, chris butcher, jeep lake

我该如何在每一行上打印克里斯·布彻的名字?请注意,克里斯·布彻的名字出现在行的不同部分

我希望的预期结果是:

Ln1 - chris butcher

Ln2 - chris butcher

Ln3 - chris butcher

我知道 grep -i "chris butcher" 会突出显示每行中的名称,但我需要它在每行中仅打印“chris butcher”作为结果。

先谢谢了!

答案1

这个 bash 脚本应该可以完成这个工作:

#!/bin/bash

fileName="/path/to/file.txt"
identifier="chris butcher"
counter=1
while read oneLine; do
    if [[ "$oneLine" == *"$identifier"* ]]; then
        echo "Ln$counter - $identifier"
        ((counter++))
    fi
done < "$fileName"
echo

答案2

给定此输入文件:

Ln1 - chris butcher, sam witwickie, joseph stalin, king kunta
Ln2 - Thor, ironman, mariah carey, chris butcher
Ln3 - jen love, chris butcher, jeep lake

使用grep -o 'chris butcher' people.txt将输出:

chris butcher
chris butcher
chris butcher

正如@Raffa在评论中所建议的那样,您可能还希望使条件更加严格,将单词表达式与匹配-w,以避免错误匹配,例如“chris butcherfoo”或“foochris butcher”。此外,您的示例有一些行号,因此-n对您来说可能也很有趣。

相关内容