ひさびさにSED 02/16
今回はsedを使って前処理。
賞状用のデータ処理を行った。
氏名と生年月日が入力されたcsvがデータ入稿したので、賞状の内容はマスターページに作成し、ドキュメントページには氏名と生年月日のテキストフレームのみを置いてCS2のデータ結合にて作業。
# 本当はもっとたくさんのフィールドがあり、様々な条件があって前処理に手間がかかっているけれどもこのエントリの主題には無関係なので割愛。
さてこの賞状、年1回の受注で、従来は賞状の内容のみを印刷し、氏名と生年月日は手書きという仕事だった。
しかし、お客様の手元には賞状を受け取る方々のcsvデータがあり、コストを抑えるため今年から手書きをやめたいというお客様のご要望により、そのcsvデータを流し込むことに。
当初は「姓」「名」「生年月日」で分割し、「姓」と「名」のフレームは両端揃えに設定。
字割りのバランスは手書きのようなわけにはいかないので、1文字姓3文字名、2文字姓1文字名など、考えられる様々なパターンを見本出しした上で本番に臨んだ。
しかし、いざ本番となり、初校が戻った時点でお客様の気まぐれご要望によりもう少し字割りのバランスを考え直すことになった。
InDesign側の設定は下記のように変更。
・文字組アキ量設定により、和字間隔の前後は最小値-50%、最適値もマイナスの値、最大値75%に
相談の結果設定された新たな条件は下記の通り。
・2文字姓2文字名の場合のみ均等配置にしたい
・他の組合せは姓と名の間隔は他より広めにしたいが、広すぎるのは嫌
・1文字姓、かつ3文字名以内の人は姓の前にスペース1つ入れてほしい
・1文字名、かつ3文字姓以内の人は名の後ろにスペース1つ入れてほしい
# 中にはカタカナ名で姓も名も5文字以上という例外もあるが、それらは個別に処理するしかない(^^;
元のcsvデータは下記の通り。
・入稿データは、もともと氏名はひとつのセルに入っている。
・姓と名の間には全角スペースがひとつ入っている。
置換に使ったsedスクリプトは下記の通り。
# □ = 全角スペース
# → = タブ
# sedにおける置換文字列中においては、タブや改行は¥マークに続けて実際にタブや改行を入力する必要がある。
あ、SEDスクリプトの2行目に、実際に使ったスクリプトには入っていない余計なスペースが入ってた。削除。
(2007/02/19 P.M.10:19 訂正)
賞状用のデータ処理を行った。
氏名と生年月日が入力されたcsvがデータ入稿したので、賞状の内容はマスターページに作成し、ドキュメントページには氏名と生年月日のテキストフレームのみを置いてCS2のデータ結合にて作業。
# 本当はもっとたくさんのフィールドがあり、様々な条件があって前処理に手間がかかっているけれどもこのエントリの主題には無関係なので割愛。
さてこの賞状、年1回の受注で、従来は賞状の内容のみを印刷し、氏名と生年月日は手書きという仕事だった。
しかし、お客様の手元には賞状を受け取る方々のcsvデータがあり、コストを抑えるため今年から手書きをやめたいというお客様のご要望により、そのcsvデータを流し込むことに。
当初は「姓」「名」「生年月日」で分割し、「姓」と「名」のフレームは両端揃えに設定。
字割りのバランスは手書きのようなわけにはいかないので、1文字姓3文字名、2文字姓1文字名など、考えられる様々なパターンを見本出しした上で本番に臨んだ。
しかし、いざ本番となり、初校が戻った時点でお客様の
InDesign側の設定は下記のように変更。
・文字組アキ量設定により、和字間隔の前後は最小値-50%、最適値もマイナスの値、最大値75%に
相談の結果設定された新たな条件は下記の通り。
・2文字姓2文字名の場合のみ均等配置にしたい
・他の組合せは姓と名の間隔は他より広めにしたいが、広すぎるのは嫌
・1文字姓、かつ3文字名以内の人は姓の前にスペース1つ入れてほしい
・1文字名、かつ3文字姓以内の人は名の後ろにスペース1つ入れてほしい
# 中にはカタカナ名で姓も名も5文字以上という例外もあるが、それらは個別に処理するしかない(^^;
元のcsvデータは下記の通り。
・入稿データは、もともと氏名はひとつのセルに入っている。
・姓と名の間には全角スペースがひとつ入っている。
seimei,birth
名前 名真江,昭和五十九年十二月七日生
名真江 太郎,昭和五十九年十一月二十三日生
生絵 なま,昭和五十八年八月十二日生
絵 奈間江,昭和五十九年九月十九日生
奈間江 博,昭和五十九年十二月四日生
佐々木 小次郎,昭和六十年一月一日生
置換に使ったsedスクリプトは下記の通り。
s/^¥(..¥)□¥(..¥t¥)/¥1¥2/
s/^¥(.¥)□¥(.¥)¥t/□¥1□¥2□¥→/
s/^¥(.¥)□¥(..+¥t¥)/□¥1□¥2/
s/^¥(..+¥)□¥(.¥)¥t/¥1□¥2□¥→/
s/^□¥(.¥)□¥(....+¥t¥)/¥1□¥2/
s/^¥(....+¥)□¥□(.¥)□¥t/¥1□¥2¥→/
# □ = 全角スペース
# → = タブ
# sedにおける置換文字列中においては、タブや改行は¥マークに続けて実際にタブや改行を入力する必要がある。
あ、SEDスクリプトの2行目に、実際に使ったスクリプトには入っていない余計なスペースが入ってた。削除。
(2007/02/19 P.M.10:19 訂正)
コメントの投稿
トラックバック
http://kstation2.blog10.fc2.com/tb.php/95-ed1177cb











肝心の説明が抜けてる。
これじゃ備忘録にならないよ……
初校時には元のcsvの姓と名の間にあったスペースもカンマに置換し、姓/名/生年月日の3フィールドのcsvにしていたのだ。
それを、校正バック時の指定により、名前の字取りのバランスを可能な限りスペースひとつで調整するために名前/生年月日の2フィールドのcsv(元のまま)を流し込むことにし、追加の条件によるスペースの増減処理を施すためにsedを使ったというワケなのだ。