アートファイル(cat -A
出力):
.::""-, .::""-.$
/:: \ /:: \$
|:: | _..--""""--.._ |:: |$
'\:.__ / .' '. \:.__ /$
||____|.' _..---"````'---. '.||____|$
||:. |_.' `'.||:. |$
||:.-'` .-----. ';:. |$
||/ .' '. \. |$
|| / '-. '. \\ |. |$
||:. _| ' \_\_\\/( \ |$
||:.\_.-' ) || m `\.--._.-""-;$
||:.(_ . '\ __'// m ^_/ / '. _.`.$
||:. \__^/` _)```'-...' _ .-'.' '-.$
||:..-'__ .' '. . ' '. `'.$
||:(_.' .`' _. ' '-. '. . ''-._$
||:. : '. .' '. . ' ' '.` '._$
||:. : '. .' .::""-: .''. ' . . ' ':::''-.$
||:. .' ..' . /:: \ '. . '. /:: \$
||:.' .' '. |:: | _.:---""---.._' |:: |$
||. : '\:.__ / .' -. .- '. \:.__ /$
||: : '. . ||____|_.' .--. .--. '._||____|$
||:'.___: '. .' ||:. | ( \/ ) ||:. |$
||:___| \ '. : ||:. | '-. .-' ||:. |$
[[____] '. '.-._||:. | __ '..' __ ||:. |$
'. : ||:. | (__\ (\/) /__) ||:. |$
'. : ||:. | ` \/ ` ||:. |$
'-: ||:. | () ||:. |$
'._||:. |________________________||:. |$
||:___|'-.-'-.-'-.-'-.-'-.-'-.-||:___|$
[[____] [[____]$
タイトルファイル(cat -A
出力):
$
$
_________ .__ $
/ _____/____ _____ ______ | | ____ $
\_____ \\__ \ / \\____ \| | _/ __ \ $
/ \/ __ \| Y Y \ |_> > |_\ ___/ $
/_______ (____ /__|_| / __/|____/\___ >$
\/ \/ \/|__| \/ $
___________ __ $
\__ ___/___ ___ ____/ |_ $
| |_/ __ \\ \/ /\ __\ $
| |\ ___/ > < | | $
|____| \___ >__/\_ \ |__| $
\/ \/ $
$
$
art_fileをCaption_fileと並べてマージしようとしています。私は今まで2つの方法を試しました。
使用
pr -Jmt art_file caption_file
.::""-, .::""-. /:: \ /:: \ |:: | _..--""""--.._ |:: | _________ .__ '\:.__ / .' '. \:.__ / / _____/____ _____ ______ | | ____ ||____|.' _..---"````'---. '.||____| \_____ \\__ \ / \\____ \| | _/ __ \ ||:. |_.' `'.||:. | / \/ __ \| Y Y \ |_> > |_\ ___/ ||:.-'` .-----. ';:. | /_______ (____ /__|_| / __/|____/\___ > ||/ .' '. \. | \/ \/ \/|__| \/ || / '-. '. \\ |. | ___________ __ ||:. _| ' \_\_\\/( \ | \__ ___/___ ___ ____/ |_ ||:.\_.-' ) || m `\.--._.-""-; | |_/ __ \\ \/ /\ __\ ||:.(_ . '\ __'// m ^_/ / '. _.`. | |\ ___/ > < | | ||:. \__^/` _)```'-...' _ .-'.' '-. |____| \___ >__/\_ \ |__| ||:..-'__ .' '. . ' '. `'. \/ \/ ||:(_.' .`' _. ' '-. '. . ''-._ ||:. : '. .' '. . ' ' '.` '._ ||:. : '. .' .::""-: .''. ' . . ' ':::''-. ||:. .' ..' . /:: \ '. . '. /:: \ ||:.' .' '. |:: | _.:---""---.._' |:: | ||. : '\:.__ / .' -. .- '. \:.__ / ||: : '. . ||____|_.' .--. .--. '._||____| ||:'.___: '. .' ||:. | ( \/ ) ||:. | ||:___| \ '. : ||:. | '-. .-' ||:. | [[____] '. '.-._||:. | __ '..' __ ||:. | '. : ||:. | (__\ (\/) /__) ||:. | '. : ||:. | ` \/ ` ||:. | '-: ||:. | () ||:. | '._||:. |________________________||:. | ||:___|'-.-'-.-'-.-'-.-'-.-'-.-||:___| [[____] [[____]
paste art_file caption_file
.::""-, .::""-. /:: \ /:: \ |:: | _..--""""--.._ |:: | _________ .__ '\:.__ / .' '. \:.__ / / _____/____ _____ ______ | | ____ ||____|.' _..---"````'---. '.||____| \_____ \\__ \ / \\____ \| | _/ __ \ ||:. |_.' `'.||:. | / \/ __ \| Y Y \ |_> > |_\ ___/ ||:.-'` .-----. ';:. | /_______ (____ /__|_| / __/|____/\___ > ||/ .' '. \. | \/ \/ \/|__| \/ || / '-. '. \\ |. | ___________ __ ||:. _| ' \_\_\\/( \ | \__ ___/___ ___ ____/ |_ ||:.\_.-' ) || m `\.--._.-""-; | |_/ __ \\ \/ /\ __\ ||:.(_ . '\ __'// m ^_/ / '. _.`. | |\ ___/ > < | | ||:. \__^/` _)```'-...' _ .-'.' '-. |____| \___ >__/\_ \ |__| ||:..-'__ .' '. . ' '. `'. \/ \/ ||:(_.' .`' _. ' '-. '. . ''-._ ||:. : '. .' '. . ' ' '.` '._ ||:. : '. .' .::""-: .''. ' . . ' ':::''-. ||:. .' ..' . /:: \ '. . '. /:: \ ||:.' .' '. |:: | _.:---""---.._' |:: | ||. : '\:.__ / .' -. .- '. \:.__ / ||: : '. . ||____|_.' .--. .--. '._||____| ||:'.___: '. .' ||:. | ( \/ ) ||:. | ||:___| \ '. : ||:. | '-. .-' ||:. | [[____] '. '.-._||:. | __ '..' __ ||:. | '. : ||:. | (__\ (\/) /__) ||:. | '. : ||:. | ` \/ ` ||:. | '-: ||:. | () ||:. | '._||:. |________________________||:. | ||:___|'-.-'-.-'-.-'-.-'-.-'-.-||:___| [[____] [[____]
どちらも2番目のファイルの並べ替えを混乱させますが、貼り付けるとより良い出力が得られます。だから私の質問は次のようになります
- を使用して目的の出力を生成できますか
paste
?pr
たぶん私がいくつかのオプションを見落としているのではないでしょうか? - どれも作業に適したツールでない場合は、新しいプログラムを作成するのではなく、どの既存のソリューションを使用できますか?
ベストアンサー1
問題は、各行の長さが異なることです。最も簡単な解決策は、十分に大きな幅を提供することですpr
。
pr -mtw 150 art_file caption_file
タイトルテキストを近づけたい場合はおすすめです
awk '
l<length && NR<=n{l=length}
NR!=FNR{
printf "%-"l"s", $0
getline line < "caption"
print line
}
' n="$(wc -l < caption)" art art
n
字幕ファイルの行数。l
n
アートファイルの最初の行間の最長行の長さ。printf
すべての行に長さがあるように、アートファイルをスペースで右側に埋めますl
。getline
次に、ヘッダーファイルから1行を取得し、印刷したばかりのアートラインの横に印刷します。
l
in値を加算または減算することで、printf
間隔を一時的に調整できます。
.::""-, .::""-.
/:: \ /:: \
|:: | _..--""""--.._ |:: | _________ .__
'\:.__ / .' '. \:.__ / / _____/____ _____ ______ | | ____
||____|.' _..---"````'---. '.||____| \_____ \\__ \ / \\____ \| | _/ __ \
||:. |_.' `'.||:. | / \/ __ \| Y Y \ |_> > |_\ ___/
||:.-'` .-----. ';:. | /_______ (____ /__|_| / __/|____/\___ >
||/ .' '. \. | \/ \/ \/|__| \/
|| / '-. '. \\ |. | ___________ __
||:. _| ' \_\_\\/( \ | \__ ___/___ ___ ____/ |_
||:.\_.-' ) || m `\.--._.-""-; | |_/ __ \\ \/ /\ __\
||:.(_ . '\ __'// m ^_/ / '. _.`. | |\ ___/ > < | |
||:. \__^/` _)```'-...' _ .-'.' '-. |____| \___ >__/\_ \ |__|
||:..-'__ .' '. . ' '. `'. \/ \/
||:(_.' .`' _. ' '-. '. . ''-._
||:. : '. .' '. . ' ' '.` '._
||:. : '. .' .::""-: .''. ' . . ' ':::''-.
||:. .' ..' . /:: \ '. . '. /:: \
||:.' .' '. |:: | _.:---""---.._' |:: |
||. : '\:.__ / .' -. .- '. \:.__ /
||: : '. . ||____|_.' .--. .--. '._||____|
||:'.___: '. .' ||:. | ( \/ ) ||:. |
||:___| \ '. : ||:. | '-. .-' ||:. |
[[____] '. '.-._||:. | __ '..' __ ||:. |
'. : ||:. | (__\ (\/) /__) ||:. |
'. : ||:. | ` \/ ` ||:. |
'-: ||:. | () ||:. |
'._||:. |________________________||:. |
||:___|'-.-'-.-'-.-'-.-'-.-'-.-||:___|
[[____] [[____]