为包含特定单词的每一行添加后缀

Add suffix to each lines containing specific word

我有 2 个文件:

文件 1

abc
def
ghi
jkl

file2(排序顺序可能不同)

ghi:Checked
def:Checked

我想创建一个这样的文件:

abc
def:Checked
ghi:Checked
jkl

在 shell 中有没有办法做到这一点?我不想更改我的文件 1

的排序顺序

试试这个:

#! /bin/bash

exec < file1

while read -r id; do
  check=$(grep "^$id:" file2)
  if (($? == 0)); then
    echo "$check"
  else
    echo "$id"
  fi
done

更新:替代实现,只读取 file2 一次。

#! /bin/bash

file2=$(grep ':Checked$' file2)

exec < file1

while read -r id; do
  check=$(grep "^$id:" <<< $file2)
  if (($? == 0)); then
    echo "$check"
  else
    echo "$id"
  fi
done

应该这样做:

$ join -a 1 -t: <( sort file1 ) <( sort file2 )
abc
def:Checked
ghi:Checked
jkl