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的大數據分析,除非拆分後統計再合併結果,效率很是低。
不斷更新。。。。
我遇到的能想到的就這些,歡迎你們給我留言!提出不一樣的解決方法和遇到過的問題,很是感謝!