1. 程式人生 > >shell:處理文本

shell:處理文本

awk 去重復 als for ash bin class one 如果

有如下文本,其中前5行內容為

1111111:13443253456
2222222:13211222122
1111111:13643543544
3333333:12341243123
2222222:12123123123

用shell腳本處理後,按下面格式輸出:

[1111111]
13443253456
13643543544
[2222222]
13211222122
12123123123
[3333333]
12341243123

#!/bin/bash
sort -n 1.txt |awk -F ':' '{print $1}'|uniq >id.txt
for id in `cat id.txt`
do
  echo "[$id]"
  awk -F ':' '$1=="'$id'" { print $2}' 1.txt
done

解析:

sort -n 使用純數字排序

awk -F ':' '{print $1}' 以“:”冒號為分隔符,打印第一字域(第一部分)

uniq 去重復的行

>id.txt 輸出重定向到id.txt文本中

awk -F ':' '$1=="'$id'" { print $2}' 1.txt :以“:”冒號分隔,如果第一域的值等於$id的值,打印第二域。

純屬個人見解,不正之處請指出

shell:處理文本