LoginSignup
1
1

More than 5 years have passed since last update.

2つのファイルにある文を1行ずつ並べて頭に連番を付けたい

Last updated at Posted at 2016-07-13

やりたいこと

1.txtには英語、2.txtには日本語が書いてあるんですが、1.txtの1行目と2.txtの1行目を並べたいんです。
こんな大したことないことでアプリをインストールしたりとかしたくないです。

1.txt
ichiban
niban
sanban
2.txt
いちばん
にばん
さんばん

望んでいる結果

1. ichiban いちばん
2. niban にばん
3. sanban さんばん

ファイル名はこういうかんじに頭に数字がついてたり、名前で並べたとき順に、左から順番につける感じが楽かと思います。

解決法

paste *.txt | cat -n | sed 's/^ *\([0-9]*\)/\1\./' | tr '\t' ' '

これで出てきた結果をコピペして使うなり、ファイルに書きだすなりします。

コメントで教えてもらいました。@Takeruさんありがとうございました。

コメントもらうまで試していたちょっと回り道なやつ

連番のデータを別ファイルに用意して単純にくっつける方法
これはこれで後々応用が効きそうなので消さないでおきます。読みにくければ別の記事に分けるかも。

vim 0.txt して、30i.(改行)して、Escキーをおすと.が30回入力される

*30o.でもいいかなって思ったけど、1行目に余計な改行が入るのが今回まずいのでiにしました

0.txt
.
.
.
(30行つづく)

さいごにいっこ余計な改行をBackspace。

:%s/^/\=line('.') . ''/すると、連番になる

0.txt
1.
2.
3.
(30行つづく)

*C-aのインクリメントでもっとお手軽にできそうだったんですがなんかうまく動きませんでした。

:wqでvimを保存して終了

あとは以下のコマンドでスペースで句切られて出力されます。
-d オプションを設定しないとタブで区切られます。

paste -d " " *.txt


参考にしました

複数ファイルの列データを1ファイルにまとめる - 生物物理計算化学者の雛

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1