次の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: