Shell 按照字符串长度进行排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell 按照字符串长度进行排序相关的知识,希望对你有一定的参考价值。
一个文本中有若干行,每一行都有且只有一个字符串,要求按照这个字符串的长度对文本中的每一行进行排序,使得长度最长的的行放第一行,第二长次之,以此类推。。。
假设你的文本叫 file.txtawk 'print $0" "length($0)' file.txt | sort -nr -k2 | awk 'print $1' > tmp.txt
排序后的文本为tmp.txt
举例:
$ cat ./file.txt
test
mytestit
hello
girl
boy
let'sdoit&justdoit.
$ awk 'print $0" "length($0)' file.txt | sort -nr -k2 | awk 'print $1' > tmp.txt
$ cat tmp.txt
let'sdoit&justdoit.
mytestit
hello
test
girl
boy 参考技术A #include<string.h>
void convert(char *a,char *b,char *c);
void main()
int i,j;
char a[3][10];
for(i=0;i<3;i++)
printf("input the %d string:\n",i+1);
scanf("%s",a[i]);//指针的用法注意点
convert(a[0],a[1],a[2]);
printf("after change\n");
for(j=0;j<3;j++)
printf("%s ",a[j]);//注意i,j啊,这个错误太隐蔽了
void convert(char *a,char *b,char *c)
char temp[10];
if(strcmp(a,b)>0)
strcpy(temp,a);
strcpy(a,b);
strcpy(b,temp);
if(strcmp(a,c)>0)
strcpy(temp,a);
strcpy(a,c);
strcpy(c,temp);
if(strcmp(b,c)>0)
strcpy(temp,b);
strcpy(b,c);
strcpy(c,temp);
参考技术B 假设操作文档为d:\1.txt
输出文件为d:\temp.txt
Dim a()
Private Sub Command1_Click()
Open "d:\1.txt" For Input As #1
Do Until EOF(1)
z = z + 1
ReDim Preserve a(z)
Line Input #1, w
a(z) = Len(w) & "*" & w
Loop
Close
For i = 1 To z - 1
For j = i + 1 To z
t = Split(a(i), "*")
q = Split(a(j), "*")
If Val(t(0)) < Val(q(0)) Then
temp = a(i)
a(i) = a(j)
a(j) = temp
End If
Next j
Next i
Open "d:\temp.txt" For Output As #2
For i = 1 To z
y = Split(a(i), "*")
Print #2, y(1)
Next i
Close
End Sub 参考技术C [root@localhost ~]# awk ' print length, $0' a | sort -n | sed 's/.* //'
a
d
ds
ese
sasd
abcds
dfsafdsa
[root@localhost ~]# cat a
abcds
ds
sasd
dfsafdsa
d
a
ese本回答被提问者采纳
Shell编程字符处理命令sort和wc
系列文章
【Shell编程】Shell中的正则表达式
【Shell编程】字符截取命令cut、printf命令
【Shell编程】字符截取命令awk、sed命令
目录
sort命令
语法:sort [选项] 文件名
参数 | 说明 |
---|---|
-f | 忽略大小写 |
-n | 以数值型进行排序,默认使用字符串排序 |
-r | 反向排序 |
-t | 指定分隔符,默认分隔符是制表符 |
-k n[,m] | 按照指定的字段范围排序,从第n字段开始,m字段结束(默认到行尾) |
实例
按照首字母做升序
命令: sort /etc/passwd
按照首字母做倒序
命令: sort -r /etc/passwd
把数值型数据按照字符型来对待进行排序
命令: sort -t ":" -k 3,3 /etc/passwd
把数值型数据按照数值来进行排序
命令: sort -n -t ":" -k 3,3 /etc/passwd
注: -n需要写在-t前面
wc命令
语法:wc [选项] 文件名
参数 | 说明 |
---|---|
-l | 只统计行数 |
-w | 只统计单词数 |
-m | 只统计字符数 |
实例
计算文件中的行数
命令:wc -l /etc/passwd
以上是关于Shell 按照字符串长度进行排序的主要内容,如果未能解决你的问题,请参考以下文章