awkでsed:ファイルを1行ずつ読み、別のファイルの特定の行に追加する

awkでsed:ファイルを1行ずつ読み、別のファイルの特定の行に追加する

次の2つのファイルを検討してくださいusers.txt

Arnold.Bosch
David.Ledru
Mehri.Sunny

そしてdocker-compose.txt

version: '3.9'
services:
  strongswan-server:
    image: vpn-strongswan
    container_name: strongswan-server

    networks:
      strongswan-server:
    environment:
      - STRONGSWAN_CLIENTS=
    sysctls:
    volumes:
    ports:
      - 500:500/udp
      - 4500:4500/udp
volumes:
  strongswan-server-conf:
networks:
  strongswan-server:

次のスクリプトは、sedフィルタを使用してSTRONGSWAN_CLIENTS

#!/bin/bash
while IFS= read -r line; do
    echo "Text read from file: $line"
  
    sed -i "10s/$/ $line/" $2

done < "$1" 

environment:
  - STRONGSWAN_CLIENTS=Arnold.Bosch David.Ledru Mehri.Sunny

これを達成する別の方法があるかどうか疑問に思いますawk

ベストアンサー1

STRONGSWAN_CLIENTS行の末尾に追加されるコードの機能と、実行したいことを行う方法は次のとおりです。

$ awk 'NR==FNR{users=users OFS $0; next} /STRONGSWAN_CLIENTS=/{$0=$0 users} 1' users.txt docker-compose.txt
version: '3.9'
services:
  strongswan-server:
    image: vpn-strongswan
    container_name: strongswan-server

    networks:
      strongswan-server:
    environment:
      - STRONGSWAN_CLIENTS=users Arnold.Bosch David.Ledru Mehri.Sunny
    sysctls:
    volumes:
    ports:
      - 500:500/udp
      - 4500:4500/udp
volumes:
  strongswan-server-conf:
networks:
  strongswan-server:

おすすめ記事