一致する文字列と一致の後に追加の文字列を同じ行に追加します。

一致する文字列と一致の後に追加の文字列を同じ行に追加します。

タイトルが多少混乱して聞こえますが、私の例を通して私の質問が明確になることを願っています。

したがって、名前のリストを含むファイル(names.txt)があります。たとえば、次のようになります。

ジョン
・デビッド
・リチャード

ループを使用して次の結果を取得しようとしています。

John John
Doe David David Doe
Richard Richard.doe

sedを使用するのが正しいコマンドかアプローチであるかはわかりませんが、私が試したことは次のとおりです。

for i in $(cat names.txt); do sed "s/$/ $i.doe/" names.txt; done

このアプローチはある程度効果がありますが、次の繰り返しリストが生成されます。

John Johne Doe David
Davide John John Dee Richard John Doe John David Doe David David Doe Richard David Doe・ジョン・リチャード・ド・デビッド・リチャード・ド・リチャード・リチャード・






私もwhile IFS = read -rループを試してみましたが、同様の結果が得られました。上記の結果を生成しないと各行を処理できないようです。

私は主題から完全に外れたかもしれませんが、ここで誰かが助けることができることを願っています。

事前にお詫び申し上げます。私は以前はsedを使用していましたが、より簡単な作業に使用しました。

ベストアンサー1

1つの可能な方法は、次のコマンドを使用することですawk

awk '{print $1,$1 ".doe"}' names.txt

おすすめ記事