Q1:获取1-9的顺序数字
shell方法一:java
foriin`seq19`;doecho$i;done相似seq19或者seq9python
1 2 3 4 5 6 7 8 9
shell方法二:shell
for((i=1;i<=9;i++));doecho$i;done相似foriin{1..9};doecho$i;donebash
1 2 3 4 5 6 7 8 9
python方法三:ide
脚本内容oop
#!/usr/bin/python for i in range(1,10): print ('%s') % i
结果输出大数据
1 2 3 4 5 6 7 8 9
sehll方法四:
spa
seq-s""-w93d
1 2 3 4 5 6 7 8 9
shell方法五:blog
echo{1..9}
1 2 3 4 5 6 7 8 9
Q2:获取以下的数字输出
12345
1234
123
12
1
shell方法:
#!/bin/bash a=({1..5}) for i in {5..1} do echo ${a[*]:0:$i} done
Q3:获取以下数字输出
55555
4444
333
22
1
shell方法:
#!/bin/bash for ((i=5; i>=1; i-- )) do for ((j=1; j<=i; j++ )) do echo -n "$i" done echo "" done
Q4:输出26272829303132333435
echo2{6..9}3{0..5}
26 27 28 29 30 31 32 33 34 35
Q5:倒序输出数字9-1
seq-s""-w9-11
9 8 7 6 5 4 3 2 1
Q6:输出0-36之间的奇数
seq-s""1236
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35
Q7:输出0-36之间的偶数
seq-s""0236
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36
Q8:输出以三位数字表示的0-100
方法一:printf"%03d"{0..100};echo
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100
方法二:echo{000..100}
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100
方法三:seq-s""-w0100
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100
方法四:awk'BEGIN{for(i=0;i<=100;i++)printf("%03d",i)}'
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100
方法五:for((i=0;i<=100;i++));doprintf"%03d"$i;done
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100
若是只是输出1-100,还能够使用
yes|grepy|sed100q|awk'{printf("%03d",NR)}';echo竖着输出:yes|nl-ba|tr''0|sed100q|cut-b4-6
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100
Q9:如何打印空白行的位置,文件内容以下
#grep-n^$a.txt显示第二、五、6行为空行
2: 5: 6:
Q10:以下显示如何使A+B=C?
A=1.1.1.1 B=2.2.2.2 C=1.1.2.2
#A=1.1.1.1;B=2.2.2.2;echo C="`expr substr"$A"14`" "`expr substr"$B"13`"
C=1.1.2.2
Q11:将文件file的内容以下,如何将第二排的第二个逗号替换为空格?
a,b,c,d,e
a,b,c,c,e
a,d,e,t,c
#sed -e "2s/^\(...\{1\}\),/\1 /" file
a,b,c,d,e a,b c,c,e a,d,e,t,c
Q12:有一个文本(文件名user),格式以下:
Leo:456:7890:11
Vincent:333:43434:2
Rack:4343:4343:222
Leo:444:33:4343
Rack:1:1:1
Tiger:1:32:4
.............................................
要求:
1.提取第二列的全部值,并对其排序。
2.计算第二列总和。
3.找出第2、三和四列之和的最大值。
4.假若有一百万个这样的文本(user文本),每一个文本大小为500M,用最快的方式统计哪一个用户(第一列)的后面三列(第2,3和4列)之和最大。[注]能够使用shell脚本或者java语言实现以上功能。
1. awk -F: '{print $2}' user
456
333
4343
444
1
1
2. awk -F: '{print $2}' user | awk '{ s += $1 } END { print "sum =",s}'
sum = 5578
3.shell脚本sh compare.sh
#!/bin/bash a=`awk -F: '{print $2}' user | sort -n | awk '{ s += $1 } END { print s}'` b=`awk -F: '{print $3}' user | sort -n | awk '{ s += $1 } END { print s}'` c=`awk -F: '{print $4}' user | sort -n | awk '{ s += $1 } END { print s}'` if [ $a -gt $b ] then big=$a else big=$b fi if [ $big -gt $c ] then echo $big else echo $c fi
55733
4.思路:须要用java实现,hadoop的mapreduce,shell脚本很难很难实现15PB的大数据分析,除非拆分后统计再合并结果,效率很是低。
不断更新。。。。
我遇到的能想到的就这些,欢迎你们给我留言!提出不一样的解决方法和遇到过的问题,很是感谢!