
ファイルの特定の行にコンマ区切り値を追加するスクリプトを作成する必要があります。
内容を含むファイルがあるとしましょう。
DL1 : [email protected],[email protected],[email protected]
DL2 : [email protected],[email protected],[email protected]
[email protected]
追加する必要がありますDL1 :
答え1
()で始まる行を一致させ、DL1 :
その末尾に()を追加するには:,[email protected]
$
$ sed '/^DL1 :/ s/$/,[email protected]/' file
DL1 : [email protected],[email protected],[email protected],[email protected]
DL2 : [email protected],[email protected],[email protected]
要件とバージョンに応じて内部変換をsed
追加できます。-i
答え2
要件を満たすには、次の方法を使用してくださいawk
。
awk '$1 == "DL1" {$0 = $0 ",[email protected]"} 1' file
-i
GNU awkを使用すると、そのオプションを内部編集に使用できます。それ以外の場合は、出力を含む一時ファイルを作成する必要があります。
この機能をシェルスクリプトに追加するには、awk変数を使用して検索と入力を渡すことができます。それは次のとおりです。
#!/bin/sh
search=$1
addition=$2
awk -v s="$search" -v a="$addition" '$1 == s {$0 = $0 "," a} 1' file
答え3
~のため標準UNIX編集:
printf '%s\n' '/^DL1 :/ s/$/,[email protected]/' w q | ed -s input
上記は改行で区切られた3つのコマンドを印刷しますed
。
- text で始まる行で行末マーク ( ) を
DL1 :
探し、次に置き換えます。$
,[email protected]
w
ディスクへのファイルの書き込みq
それによって編集されました
これは行の最後に追加される最終的な効果を持ちます。,[email protected]
DL1 :