
Linuxのsdiffコマンドについての質問です。
sdiffでfile1とfile2を比較した場合、普通はfile1とfile2の間に自動的にタブもしくはスペースが挿入されてfile2の開始位置が縦に揃うようになります。(下の例1参照)
ところが日本語が混じった行に関しては縦にうまく揃ってくれず困っています。(下の例2参照)
このような場合でもうまく縦に揃えて出力できる良い方法はないでしょうか?
ご回答よろしくお願いします。
(等幅フォントで見てください。)
例1
aaa aaa
bbb | xxx
ddddd | yyyy ←file2が縦に揃って出力される
ee ee
例2
aaa aaa
bbb | xxx
ああ | いい ←期待する位置よりも右にずれる
ee ee
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
すみません、else と if の間はスペースです。
\tも不必要ですね。
sdiff file1.txt file2.txt |\
awk '{if($2=="<"){printf("%-50s%s\n",$1,$2)}\
else if (NF==2){printf("%-50s %s\n",$1,$2)}\
else{printf("%-50s| %s\n",$1,$3)}}'
多分、これをktermなどにペーストすればうまくいくのでは?
awkで1列目を50バイトの幅で表示するようにしています。
sdiffが表示する一致しない行のマーク|はいまの場合も同じように表示させるようにしています。
No.2
- 回答日時:
たぶん、それは日本語が問題ではなくて、
あとから出て来る単語の長さが長いと起こるようですね。
それならばこれでどうだ!
sdiff file1.txt file2.txt |\
awk '{if($2=="<"){printf("%-50s\t%s\n",$1,$2)}\
elseif (NF==2){printf("%-50s\t %s\n",$1,$2)}\
else{printf("%-50s\t| %s\n",$1,$3)}}'
ファイルに含まれる単語が50バイト以下と仮定してます。
それより長い単語の場合は50を適当にふやしてください。
また逆に、もっと短いのなら50を減らせばもっとくっついて表示されます。
No.1
- 回答日時:
こんばんわ~
等幅フォントでの見方がよくわからないので、問題を把握しきれてるかどうか自信ありませんが、
とりあえず、2バイト文字が入るとsdiffの出力がずれると思って回答します。
私の環境でやってみましたが、とくにズレるということはないようですよ。
ちなみに、バージョンは
sdiff (GNU diffutils) 2.8.1
です。(sdiff --versionで出ます。)
あるいは、下のようにフィルタして整形てみるとか。
sdiff file1 file2 | awk '{if(NF==2){print $1"\t "$2}else{print $1"\t"$2$3}}'
ただし、file1,file2はともに、
aaa
bbb
ああ
ee
のように、単語が空白のない形で1行に1つづつ並んでいると仮定しています。
この回答への補足
質問の例がわかりにくく、回答者の方にご迷惑おかけしました。少し補足します。
(1)gooの画面で入力したとき、半角スペースが複数続くと自動的に1つの半角スペースにされてしまうようで、質問の例の意図が伝わりにくくなってしまいました。
そこで半角スペースの変わりに_を使って例を書き直します。
(2)質問の例そのものが適切でありませんでした。全角文字が4文字以上あるとずれるようです。全角文字が多ければ多いほどずれる量も大きくなります。
例1
aaa__________aaa
bbb_______|__xxx
ddddd_____|__yyyy
ee___________ee
例2
aaa__________aaa
bbb_______|__xxx
ああああ___________|__いいい
ee___________ee
上の部分をメモ帳にコピーペーストすれば等幅で見られると思います。
使っているsdiffのバージョンは2.7です。
回答ありがとうございます。
2バイト文字が入るとsdiffの出力がずれるという問題ですが、4文字以上にならないと問題が起こらないようです。
awkはまだよく勉強していないので良くわかりませんが、回答して頂いたものをそのまま試してもうまくできませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelで、カーソルの移動が異常です。 1 2022/06/15 20:54
- Excel(エクセル) [入力規則]のリストボックス内の“不揃いの林檎たち” 3 2022/09/15 18:32
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- Dropbox PCにあるDropboxのアカウントを確認するには 1 2022/08/20 10:08
- その他(コンピューター・テクノロジー) <a href="file:///フォルダ名/ファイル名">リンクテキスト</a>について 1 2023/04/06 22:40
- PHP ファイルアップロードの上限を増やす 7 2023/06/23 12:50
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- Mac OS PATHを使ってcdなどで簡単に移動できるようになりたい 3 2023/05/13 14:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WinSCPでLinux(CentOS6.10)に...
-
LinuxでWine使うとどのくらいWi...
-
Core 2 Duo の古いパソコンに最...
-
bashでシングルクォート内の変...
-
ubuntu(linux)のシャットダウン...
-
Linux のシェルスクリプトの強...
-
ログにserver reached MaxReque...
-
インストールできないですどう...
-
zorin OS
-
Linuxでブートディスクの交換後...
-
ssh接続しようとしたらエラーメ...
-
CentOSが起動時にフリーズ
-
私のパソコンでVirtualBoxは使...
-
Ubuntu on Xorgのログインについて
-
空のディレクトリで dir を行っ...
-
ubuntu が起動しない。
-
「/var/log」内のログの削除の...
-
Lubuntuでとにかく軽量のバージ...
-
ViエディタとVimエディタの違い...
-
LinuxのノートパソコンでDVDコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LinuxでWine使うとどのくらいWi...
-
Core 2 Duo の古いパソコンに最...
-
Linux のシェルスクリプトの強...
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
ubuntuで デイスク/deb/loopと...
-
apacheでリバースプロキシを設...
-
CentOSが起動時にフリーズ
-
ubuntuのシャットダウンが進ま...
-
ubuntu が起動しない。
-
Windowsのローカルディレクトリ...
-
Ububtuでファイル共有できない...
-
Ubuntu on Xorgのログインについて
-
ログにserver reached MaxReque...
-
「/var/log」内のログの削除の...
-
ubuntu 24 へのCanon 複合機ス...
-
ssl_request_logの必要性について
-
私のパソコンでVirtualBoxは使...
-
WineのRufusでデバイスを検知す...
-
LinuxのノートパソコンでDVDコ...
おすすめ情報