我需要使用bash脚本从一个巨大的文本文件中重复删除第一行.
现在我正在使用sed -i -e "1d" $FILE- 但删除大约需要一分钟.
有没有更有效的方法来实现这一目标?
如果我有一个带有以下内容的文本文件
red apple
green apple
green apple
orange
orange
orange
Run Code Online (Sandbox Code Playgroud)
是否有可用于获得以下结果的Linux命令或脚本?
1 red apple
2 green apple
3 orange
Run Code Online (Sandbox Code Playgroud) 我有一个命令(cmd1),它通过一个日志文件来过滤掉一组数字.这些数字是随机顺序,因此我使用sort -gr来获得反向排序的数字列表.此排序列表中可能存在重复项.我需要找到该列表中每个唯一号码的计数.
例如,如果cmd1的输出是:
100
100
100
99
99
26
25
24
24
Run Code Online (Sandbox Code Playgroud)
我需要另一个命令,我可以管道上面的输出,所以,我得到:
100 3
99 2
26 1
25 1
24 2
Run Code Online (Sandbox Code Playgroud) 我有一个包含以下数据的输入文件:
line1
line2
line3
begin
line5
line6
line7
end
line9
line1
line3
Run Code Online (Sandbox Code Playgroud)
我试图找到所有重复的行,我尝试过
sort filename | uniq -c
Run Code Online (Sandbox Code Playgroud)
但似乎不适合我:
它给了我:
1 begin
1 end
1 line1
1 line1
1 line2
1 line3
1 line3
1 line5
1 line6
1 line7
1 line9
Run Code Online (Sandbox Code Playgroud)
这个问题可能看起来重复,因为在文件中查找重复行并计算每行重复了多少次? 但输入数据的性质不同。
请建议。
我在linux机器上的许多shell脚本中使用了'uniq -d -c file',它确实有效.在我的MAC(安装了开发人员工具的OS X 10.6.7)上似乎不起作用:
$ uniq -d -c testfile.txt
usage: uniq [-c | -d | -u] [-i] [-f fields] [-s chars] [input [output]]
Run Code Online (Sandbox Code Playgroud)
如果有人能检查这个会很好.
这个问题真的很难写,因为我看不出任何能给它带来意义的东西.但这个例子显然是直截了当的.如果我有这样的文件:
1
2
2
3
4
Run Code Online (Sandbox Code Playgroud)
在解析删除重复行的文件之后,变成这样:
1
3
4
Run Code Online (Sandbox Code Playgroud)
我知道python或其中的一些,这是我写的一个python脚本来执行它.创建一个名为的文件clean_duplicates.py并将其运行为:
import sys
#
# To run it use:
# python clean_duplicates.py < input.txt > clean.txt
#
def main():
lines = sys.stdin.readlines()
# print( lines )
clean_duplicates( lines )
#
# It does only removes adjacent duplicated lines, so your need to sort them
# with sensitive case before run it.
#
def clean_duplicates( lines ):
lastLine = lines[ 0 ]
nextLine = None
currentLine = None …Run Code Online (Sandbox Code Playgroud)