![]() |
1
4
如果允许对输出进行重新排序,请回答。
第一行
|
![]() |
2
2
一种快速而肮脏的方法如下:
读取输入文件并打印每个元素及其在文件中出现的时间,然后使用awk仅打印仅出现1次的行。 |
![]() |
3
0
以下awk执行所请求的操作,它读取文件两次。
代码为:
您也可以一次性读取文件,但随后将其存储到内存中:
类似于的解决方案
Allan
,但使用
考虑到此构造读取文件(N+1)次,其中N是行数。 |
![]() |
4
0
第一步: 此解决方案基于以下假设: 允许对输出进行重新排序 . 如果是这样,那么在处理之前对输入文件进行反向排序应该会更快。通过反向排序,我们只需比较每个循环中的两个连续行,无需搜索所有文件或所有“已知前缀”。我明白这一点 一行定义为前缀,如果它是任何其他行的前缀,则应将其删除 . 以下是 删除文件中的前缀,允许重新排序 :
说明:
测试:
第2步: 如果您真的需要保持秩序,那么这个脚本就是 删除所有前缀,不允许重新排序 :
说明:
测试:
笔记:
在这两种解决方案中,成本最高的操作是调用
在步骤2的解决方案中,
|
![]() |
John Smith · 在特定行的末尾添加文本 2 年前 |
![]() |
Waddah Shamroukh · 使用sed将字符串替换为变量 2 年前 |
![]() |
DAG · bash使用sed在文件的第一个位置插入单词 2 年前 |
![]() |
nickcrv06 · 在两个常量字符串之间提取单词 3 年前 |
![]() |
DevOps_Engg · 使用sed提取路径值子字符串 3 年前 |