リストに引用符を追加する必要があります。後でこのリストを mailman にインポートします。
私が持っているのは、次のようなリストです。
SurName Name email@host.foo
otherSurName otherName otheremail@host.bar
私が必要とするのは:
"SurName Name" email@host.foo
これはsedを使用して可能になると思いますが、その方法を想像できません。
これを試してください:
sed -r 's/^(.*) +(.*@.*)/"\1" \2/' file
また
sed -r 's/^(.*) +([^ ]+)$/"\1" \2/' file
このフォーム0 to N
では、名前の部分にスペースを含めることができます。sed
コマンドはそれを処理します
最初の引用は簡単ですがs/^/"/
、2 番目の引用は少しトリッキーですが、次のパターンで電子メール アドレスに固定できます。s/ *[^@ ]*@[^@]*$/"&/
例:
sed 's/^/"/; s/ *[^@ ]*@[^@]*$/"&/' file
出力:
"SurName Name" email@host.foo
"otherSurName otherName" otheremail@host.bar
ファイル全体がこのように並べられている場合は、単に使用できます
sed -e 's/^\(.*\) \(.*\) \(.*\)$/"\1 \2" \3/'
さらに別の sed オプション:
sed '{
s/^/"/
s/ \([^ ]*\)$/" \1/
}' inputFile
1行で同じこと:
sed 's/^/"/;s/ \([^ ]*\)$/" \1/' inputFile
あなたはこのawk
ようにすることができます:
awk '{$1="\""$1; $2=$2"\""}1' file
テスト
$ awk '{$1="\""$1; $2=$2"\""}1' file
"SurName Name" email@host.foo
"otherSurName otherName" otheremail@host.bar
2 つの列のみのケースも処理したい場合は、次のようにします。
$ awk '{if (NF==2) $1="\""$1"\""; else {$1="\""$1; $2=$2"\""}}1' file
"SurName Name" email@host.foo
"otherSurName otherName" otheremail@host.bar
"thirdname" sdfff@sdff.go
または、2 つまたは 3 つの列しかないことがわかっている場合は、少し短くすることができます。
awk '{$1="\""$1;$(NF-1)=$(NF-1)"\""}1' file
名前のない行を処理したい場合は、次のようにします。
awk '{if(NF>2){$1="\""$1; $2=$2"\""}}1' file
デモ
$ awk '{if(NF>2){$1="\""$1; $2=$2"\""}}1' file
"SurName Name" email@host.foo
"otherSurName otherName" otheremail@host.bar
thirdname sdfff@sdff.go
sdfdf@sddf.su