sed指令实践---用于排序

使用sed命令,进行简单排序,更改源文件

首先,要排序的文件叫TestFile

[[email protected] shell]# cat TestFile

A:4

B:5

C:1

D:3

E:2

字母后边是序号,要按照正确的12345顺序排列。

脚本名字叫setup.sh

[[email protected] shell]# cat sed.sh

#!/bin/bash

TestFile=/home/craft/shell/TestFile

Testcontent=`awk -F: ‘{print $2}‘ $TestFile`  拿到第二列

echo $Testcontent

for init in $Testcontent;do

temp0=$(grep $init $TestFile |awk -F: ‘{print $1}‘)  拿到第一列

sed -i ‘/‘"$init"‘/a‘"$temp0"‘‘ test

done

原来test文件里面,是序号12345

以A:4举例 , init=4,用sed指令,把A查到test的第四列后

同样的把B查到第5列后,进行排序。

运行sed.sh的结果是

[[email protected] shell]# ./sed.sh

4 5 1 3 2

test的内容变成

[[email protected] shell]# cat test

1

C

2

E

3

D

4

A

5

B

6

如果不用插入,用替换 sed -i ‘/‘"$init"‘/c"$temp0"‘‘ test

结果如下

[[email protected] shell]# cat test

C

E

D

A

B

另外,这个功能用sort就可以实现

[[email protected] shell]# sort +1 -2 -n -t : TestFile

C:1

E:2

D:3

A:4

B:5

时间: 2024-11-06 04:23:49

sed指令实践---用于排序的相关文章

AngularJS 指令实践

概述 如果你写过AngularJS的应用,那么你一定已经使用过指令,不管你有没有意识到.你肯定已经用过简单的指令,比如 ng-mode, ng-repeat, ng-show等.这些指令都赋予DOM元素特定的行为.例如,ng-repeat 重复特定的元素,ng-show 有条件地显示一个元素.如果你想让一个元素支持拖拽,你也需要创建一个指令来实现它. 指令基本思想:它通过对元素绑定事件监听或者改变DOM而使HTML拥有真实的交互性. Link函数和Scope 指令生成出的模板其实没有太多意义,除

lightgbm用于排序

一. LTR(learning to rank)经常用于搜索排序中,开源工具中比较有名的是微软的ranklib,但是这个好像是单机版的,也有好长时间没有更新了.所以打算想利用lightgbm进行排序,但网上关于lightgbm用于排序的代码很少,关于回归和分类的倒是一堆.这里我将贴上python版的lightgbm用于排序的代码,里面将包括训练.获取叶结点.ndcg评估.预测以及特征重要度等处理代码,有需要的朋友可以参考一下或进行修改. 其实在使用时,本人也对比了ranlib中的lambdama

数据结构实践——二叉树排序树中查找的路径

本文是[数据结构基础系列(8):查找]中的实践项目参考. [项目 - 二叉树排序树中查找的路径] 设计一个算法,输出在二叉排序中查找时查找某个关键字经过的路径. [参考解答] 专为本项目设计的算法体现在函数int SearchBST(-)和void SearchResult()中. #include <stdio.h> #include <malloc.h> #define MaxSize 100 typedef int KeyType; //定义关键字类型 typedef cha

shell问题案例及三剑客awk与sed解决实践

20150418周末小题 原始数据: 17/Apr/2015:09:29:24 +0800 17/Apr/2015:09:30:26 +0800 17/Apr/2015:09:31:56 +0800 18/Apr/2015:09:34:12 +0800 18/Apr/2015:09:35:23 +0800 19/Apr/2015:09:23:34 +0800 19/Apr/2015:09:22:21 +0800 20/Apr/2015:09:45:22 +0800 期望结果: 2015-04-1

程序算法艺术与实践经典排序算法之Insertion Sort

插入排序(Insertion Sort)的基本思想是每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止. 基本思想与伪代码 经过j-1遍处理后,A[1..j-1]己排好序.第j遍处理仅将A[j]插入L[1..j-1]的适当位置,使得A[1..j]又是排好序的序列.要达到这个目的,我们可以用顺序比较的方法.首先比较A[j]和A[j-1],如果A[j-1]≤ A[j],则A[1..j]已排好序,第i遍处理就结束了:否则交换A[j]与A[j-1]的

&lt;linux小白进阶&gt; sed指令的基本用法

本文内容较简洁,适合linux有点基础的菜鸟... 功能介绍之后都有例子便于理解,希望对大家能起到帮助作用 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. 1.

sed指令

在某一行后插入:sed -i '/指定行内容/a\插入行' filename # sed -i '/set -e/a\export USE_CCACHE=1' /etc/init.d/tomcat7 在某一行前插入:sed -i '/指定行内容/i\插入行' filename # sed -i '/set -e/i\export USE_CCACHE=1' /etc/init.d/tomcat7 删除空行: # sed -i '/^$/d' filename 通过命令更换文件内容: # sed

System.Array 类提供了许多有用的方法和属性,用于排序、搜索和复制数组。

数组是引用类型,数组作为方法的参数使用时,应注意in.ref.out声明的用法. 第4章  C#语句 32 4.1  使用break语句 33 break 语句用于终止最近的封闭循环或它所在的switch语句. 4.2  使用continue语句 34 continue 语句将控制权传递给它所在的封闭迭代语句的下一次迭代. 4.3  使用do语句 36 do 语句重复执行{}中的一个语句或语句块,直到指定的表达式计算为 false. 4.4  使用foreach语句 37 foreach 语句为

C++11新特性应用--介绍几个新增的便利算法(用于排序的几个算法)

继续C++11在头文件algorithm中添加的算法. 至少我认为,在stl的算法中,用到最多的就是sort了,我们不去探索sort的源代码.就是介绍C++11新增的几个关于排序的函数. 对于一个序列,我们怎么知道他是不是有序的呢?这就用到了: is_sorted 原型: template <class ForwardIterator> ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last);