1. 程式人生 > >shell陣列處理

shell陣列處理

linux shell在程式設計方面比windows 批處理強大太多,無論是在迴圈、運算。已經資料型別方面都是不能比較的。 下面是個人在使用時候,對它在陣列方面一些操作進行的總結。 1.陣列定義 [[email protected] ~]$ a=(1 2 3 4 5)
[[email protected] ~]$ echo $a
1 一對括號表示是陣列,陣列元素用“空格”符號分割開。 2.陣列讀取與賦值
  • 得到長度
[[email protected] ~]$ echo ${#a[@]}
5
用${#陣列名[@或*]} 可以得到陣列長度
  • 讀取
[[email protected] ~]$ echo ${a[2]}
3
[[email protected]5 ~]$ echo ${a[*]}
1 2 3 4 5   
用${陣列名[下標]} 下標是從0開始  下標是:*或者@ 得到整個陣列內容
  • 賦值:
[[email protected] ~]$ a[1]=100 [[email protected] ~]$ echo ${a[*]}
1 100 3 4 5 [[email protected] ~]$ a[5]=100    
[[email protected] ~]$ echo ${a[*]} 1 100 3 4 5 100 直接通過 陣列名[下標] 就可以對其進行引用賦值,如果下標不存在,自動新增新一個數組元素
  • 刪除:
[[email protected] ~]$ a=(1 2 3 4 5)
[
[email protected]
~]$ unset a
[[email protected] ~]$ echo ${a[*]} [[email protected] ~]$ a=(1 2 3 4 5)
[[email protected] ~]$ unset a[1]  
[[email protected] ~]$ echo ${a[*]}
1 3 4 5
[[email protected] ~]$ echo ${#a[*]}
4
直接通過:unset 陣列[下標] 可以清除相應的元素,不帶下標,清除整個資料。
3.特殊使用
  • 分片:
[[email protected] ~]$ a=(1 2 3 4 5)
[[email protected] ~]$ echo ${a[@]:0:3}
1 2 3
[[email protected] ~]$ echo ${a[@]:1:4}
2 3 4 5
[[email protected] ~]$ c=(${a[@]:1:4})
[[email protected] ~]$ echo ${#c[@]}
4
[[email protected] ~]$ echo ${c[*]}
2 3 4 5
直接通過 ${陣列名[@或*]:起始位置:長度} 切片原先陣列,返回是字串,中間用“空格”分開,因此如果加上”()”,將得到切片陣列,上面例子:c 就是一個新資料。
  • 替換:
[[email protected] ~]$ a=(1 2 3 4 5)   
[[email protected] ~]$ echo ${a[@]/3/100}
1 2 100 4 5
[[email protected] ~]$ echo ${a[@]}
1 2 3 4 5
[[email protected] ~]$ a=(${a[@]/3/100})
[[email protected] ~]$ echo ${a[@]}    
1 2 100 4 5
呼叫方法是:${陣列名[@或*]/查詢字元/替換字元} 該操作不會改變原先陣列內容,如果需要修改,可以看上面例子,重新定義資料。

相關推薦

shell陣列處理

linux shell在程式設計方面比windows 批處理強大太多,無論是在迴圈、運算。已經資料型別方面都是不能比較的。 下面是個人在使用時候,對它在陣列方面一些操作進行的總結。 1.陣列定義 [[email protected] ~]$ a=(1 2 3

shell習題-處理日誌

shell寫一個腳本查找/data/log目錄下,最後創建時間是3天前,後綴是*.log的文件,打包後發送至192.168.1.2服務上的/data/log下,並刪除原始.log文件,僅保留打包後的文件#!/bin/bash find /data/log -name “*.log” -mtime +3 &g

shell處理文本

awk 去重復 als for ash bin class one 如果 有如下文本,其中前5行內容為1111111:134432534562222222:132112221221111111:136435435443333333:123412431232222222:12

shell處理使用者輸入

1、使用命令列引數 在shell執行的時候命令列中輸入的所有引數可以賦值給一些特殊變數,這些變數成為位置變數引數。 包括: $0返回指令碼名稱、$1為第一個引數、$2為第二個引數 ...$9第九個引數 在變數到9個之後,必須使用大括號將變數括起來 ${10}第十個引數 $#是獲取傳入的引數數量 $*是獲取所

HDU1042 N!陣列處理大數

***a[i][]表示的是i!,每一個a[i][j]存放一個小於10000。   ***用w[i]跟隨記錄數的長度。 ***10000!是一個35660位數 #include <iostream> #include <cstdio> #incl

shell 文字處理——使用awk格式化時間戳

date -d @時間戳 "+%Y-%m-%d %H:%M:%S" 也可以內建函式 awk '{print strftime("%Y-%m-%d %H:%M:%S", $1)}' 如果是毫秒級的時間戳要先除以1000;   在 shell 中這樣子處理: awk '{print $1",

31. Next Permutation-- 陣列處理

竟然被這麼一道簡單題折騰了好久,WA了很多次。  演算法: 從後往前找,找到a[i-1] 時,從i 到len 中 最小的 但大於 a[i-1]的數,並且交換。 交換後把i 到 len 進行排序。 code 如下: 一開始下標沒處理好,21行少了個break, 只得讓24行變成 i+2 ,但這

js中關於陣列處理的一些小技巧

1 reduce方法同時實現map和filter 假設現在有一個數組,然後遍歷它的每一項(map的功能)然後篩選出其中的一部分(filter的功能)。如果使用map和filter的話,我們需要遍歷這個陣列兩次。 在下面的程式碼中,我們將數列中的值翻倍,然後挑選出那些大於50的數: const nu

典型陣列處理程式碼

package com.arithmetic; import java.util.Arrays; public class Array { // 獲得陣列最大值 public static double getMaxValue(double[] array) {

shell 指令碼的一些常用命令 set, export, shell陣列,esac, tee,time

1. set Linux set命令用來設定 shell ,設定使用shell的執行方式。 引數說明 -a  標示已修改的變數,以供輸出至環境變數。 -b  使被中止的後臺程式立刻回報執行狀態。 -C  轉向所產生的檔案無法覆蓋已存在的檔案。 -d  She

shell陣列程式設計

參考連線 https://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html linux shell 陣列建立及使用技巧linux shell在程式設計方面比windows 批處理強大太多,無論是在迴圈、運算。已經資料型別方面都是不能比較的。 下

Shell正則表示式 & Grep正則表示式 & shell字串處理

摘自:https://www.cnblogs.com/hoji-real/articles/2311214.html   Shell正則表示式 一個正則表示式就是由普通字元(例如字元 a 到 z)以及特殊字元(稱為元字元)組成的文字模式。該模式描述在查詢文字主體時待匹配的一個或

Shell陣列和函式

陣列中可以存放多個值。Bash Shell 只支援一維陣列(不支援多維陣列)。 Shell 陣列用括號來表示,元素用"空格"符號分割開,語法格式如下: array_name=(value1 ... valuen) 2.陣列常用操作 1)定義一個數組: myarray=(1 2 3 4 5);

shell 陣列遍歷的3種方法

                        shell陣列的

shell 陣列例項

ary=(1 2 3) a=2 if [[ "${ary[@]}" =~ "$a" ]] ; then     echo "a in ary" else     echo "a not in ary" fi   獲取陣列長度echo

02-shell文字處理三劍客之sed

sed 是流編輯器,但是它不會修改原始檔。 sed (流文字編輯器) 用法:sed OPTIONS… [SCRIPT] [INPUTFILE…] -r: 使用擴充套件的正則表示式; -n, –quiet, –silent: 不輸出模式空間的內容; -i:直接編輯原檔案; -

01-shell文字處理三劍客之grep

開篇:哈嘍,今天我想寫寫shell程式設計,打算平均一天一篇吧,這樣一個月後就可以進步比較多。 先從shell文字處理三劍客grep、sed、awk開始。聽說啊,要是我不會這個命令,就不好意思說自己會shell程式設計。 1 grep是什麼意思? grep: Global se

利用陣列處理Fibonacci數列問題

#include<stdio.h> int main() { int i,f[20]={1,1}; //建立迴圈變數,並且為陣列的前2位數賦值。 for(i=2;i<=20;i++) //設立個18次的迴圈 f

awk基礎篇——Shell 文字處理利器

awk sed傾向於以行為單位進行處理,而awk更擅長將一行分為幾段進行處理。 awk的語法 awk用法 | awk '條件型別1{動作1} 條件型別2{動作2} ...' awk '條件型別1{動作1} 條件型別2{動作2} ...' fil

Linux Shell 文字處理工具集錦(重點推薦)

        依稀記得某人曾今問過關於linux中的高階用法,當時覺得一臉懵逼,後來才發現,所謂的高階用法,無非是可以被python替換的shell基礎指令碼,及處理10GB資料量以下的linux基礎命令。現在看到了就整理了一下。 1.shell特殊符號