用于删除冗余行的Bash脚本
发布时间:2020-12-15 22:55:13 所属栏目:安全 来源:网络整理
导读:下午好, 我正在尝试制作一个清除一些数据输出文件的bash脚本.文件看起来像这样: /path//path/to/path/to/keep/another//another/path//another/path/to/another/path/to/keep 我想最终得到这个: /path/to/keep/another/path/to/keep 我想循环遍历文件的行,
下午好,
我正在尝试制作一个清除一些数据输出文件的bash脚本.文件看起来像这样: /path/ /path/to /path/to/keep /another/ /another/path/ /another/path/to /another/path/to/keep 我想最终得到这个: /path/to/keep /another/path/to/keep 我想循环遍历文件的行,检查下一行以查看它是否包含当前行,如果是,则从文件中删除当前行.这是我的代码: for LINE in $(cat bbutters_data2.txt) do grep -A1 ${LINE} bbutters_data2.txt if [ $? -eq 0 ] then sed -i '/${LINE}/d' ./bbutters_data2.txt fi done 解决方法
假设您的输入文件按照您显示的方式排序:
$awk 'NR>1 && substr($0,1,length(last))!=last {print last;} {last=$0;} END{print last}' file /path/to/keep /another/path/to/keep 这个怎么运作 awk逐行读取输入文件.每当我们读到一个新行时,我们会将它与最后一行进行比较.如果新行不包含最后一行,那么我们打印最后一行.更详细: > NR> 1&& substr($0,length(last))!= last {print last;} 如果这不是第一行,并且最后一行(名为last)不包含在当前行$0中,则打印最后一行. 将变量最后更新为当前行. 读完文件后,打印最后一行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |