teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

Update

2021/11/02 12:55

投稿

melian
melian

スコア21274

answer CHANGED
@@ -1,4 +1,4 @@
1
- `test.txt` の内容を見ると、各列の位置が決まっている様なので(3,4,5列は15目から47桁目まで)、GNU coreutils の uniq コマンドを使ってみます。
1
+ `test.txt` の内容を見ると、3,4,5列目の幅の合計固定(`11*3=33`)の様なので、GNU coreutils の uniq コマンドで処理してみます。
2
2
 
3
3
  テストのために重複行の位置を変更しておきます。
4
4
  ```test.txt
@@ -6,15 +6,15 @@
6
6
  002 5678 6 4 0 テスト2
7
7
  003 9012 7 8 6 テスト3
8
8
  004 3456 27 27 0 テスト4
9
- 005 1123 8 19 26 テスト6
9
+ 005 1123 8 19 26 テスト5
10
- 006 7890 27 27 0 テスト5
10
+ 006 7890 27 27 0 テスト6
11
11
  ```
12
12
 
13
13
  ```bash
14
14
  $ uniq --version
15
15
  uniq (GNU coreutils) 8.32
16
16
 
17
- $ cat test.txt | sort -k3,5 | uniq -D -s 14 -w 33
17
+ $ cat test.txt | sort -k3,5 | uniq -D -f 2 -w 33 # 先頭の2列を無視、直後の33文字で比較
18
18
  004 3456 27 27 0 テスト4
19
- 006 7890 27 27 0 テスト5
19
+ 006 7890 27 27 0 テスト6
20
20
  ```

1

Update

2021/11/02 12:55

投稿

melian
melian

スコア21274

answer CHANGED
@@ -1,4 +1,4 @@
1
- `test.txt` の内容を見ると、各列の位置が決まっている様なので(3,4,5列は14桁目から33桁目まで)、GNU coreutils の uniq コマンドを使ってみます。
1
+ `test.txt` の内容を見ると、各列の位置が決まっている様なので(3,4,5列は15桁目から47桁目まで)、GNU coreutils の uniq コマンドを使ってみます。
2
2
 
3
3
  テストのために重複行の位置を変更しておきます。
4
4
  ```test.txt