Uniq许多文件到位

Ros*_*one 2 unix bash

我有很多*.dat文件.什么是bash脚本可以删除每个中的重复相邻行?

Jon*_*Lin 6

你的意思是这样的?

#!/bin/bash
for f in "$@"
do
   cp "$f" /tmp/tmp.dat
   uniq /tmp/tmp.dat > "$f"
done
Run Code Online (Sandbox Code Playgroud)

您可以在包含许多*.dat文件的目录中运行的位置.如果你将它放在一个名为的脚本中uniq_dat,并使其可执行,你可以运行它:

uniq_dat *.dat
Run Code Online (Sandbox Code Playgroud)

  • 你应该使用`for f in"$ @"`或者简单地用简写为f`.特殊变量`$*`不能正确处理空格等.类似地,你应该在`$ f`周围使用双引号,除非你特别希望shell将值拆分为`IFS`上的多个标记. (2认同)

don*_*lan 5

使用排序!

sort -u foo -o foo
# is short for
sort --unique foo -o foo

# if you want to avoid sorting
sort —merge —unique foo -o foo
Run Code Online (Sandbox Code Playgroud)