awk和sed实例

2014-06-27

有一个2列的文件,想删掉重复的数据,并保持2列。

1、cat a.txt

/local/face-15/998/24.jpg /local/face-15/998/13.jpg
/local/face-15/998/07.jpg /local/face-15/998/29.jpg
/local/face-15/998/07.jpg /local/face-15/998/29.jpg
/local/face-15/998/29.jpg /local/face-15/998/07.jpg

2、为了删掉重复的数据,我们需要先将数据合并为1列

cat a.txt|awk '{print $1"\n"$2}'|sort|uniq

或者

sed 's/ /\n/g' a.txt| sort|uniq

/local/face-15/998/07.jpg
/local/face-15/998/13.jpg
/local/face-15/998/24.jpg
/local/face-15/998/29.jpg

3、为了将数据恢复成2列

cat a.txt|awk '{print $1"\n"$2}'|sort|uniq|awk 'ORS=NR%2?"\t":"\n"'

或者

sed 's/ /\n/' a.txt| sort|uniq|xargs -n2

/local/face-15/998/07.jpg /local/face-15/998/13.jpg
/local/face-15/998/24.jpg /local/face-15/998/29.jpg

4、尝试3列结果

cat a.txt|awk '{print $1"\n"$2}'|sort|uniq|awk 'ORS=NR%3?"\t":"\n"'

或者

sed 's/ /\n/' a.txt| sort|uniq|xargs -n3

/local/face-15/998/07.jpg /local/face-15/998/13.jpg /local/face-15/998/24.jpg
/local/face-15/998/29.jpg

5、删除所有数字行

sed -i '/^[0-9]*$/d' a.txt

6、文件尾增加另一个文件内容
find . -type f -exec sed -i '$r tmp.txt' {} \;

7、尾行删除/添加

sed -i '$d' a.txt

sed -i '$a\要插入的文字' file.txt

分类:Linux | 标签: |

相关日志

评论被关闭!