shell中字串的處理

weixin_33860553發表於2012-06-13

原文連結

摘要:shell中字串的處理
  對字串的處理
  包括:擷取,連線,匹配,替換,翻轉... ...
  一天累積一點!
  字串的處理:
  1,擷取
  方法一:
  echo $a|awk ’{print substr( ,1,8)}’
  substr是awk中的一個子函式,對第一個引數的進行擷取,從第一個字元開始,共擷取8個字元,如果不夠就從第二個字元中補充
  方法二
  echo $a|cut -b2-8
  cut:對標準輸入的字串進行處理
  cut -bn-m:以byte為單位,從第n個byte開始,取m個
  cut -bn,m:以byte為單位,擷取第n,m個byte
  cut -b-n,m:以byte為單位,擷取1-n,和第m個
  -c:以charactor為單位
  -d:指定分隔符,預設為tab
  -s:使標準輸入中沒有delimeter
  cut -f1:擷取第1個域
  方法三
  a=123456
  echo $
  方法四
  使用sed擷取字串的最後兩位
  echo $test |sed ’s//(.*/)/(../)$//’
  擷取字串的前2位
  echo $test |sed ’s/^/(../)/(.*/)//’
  2,比較
  好像沒有什麼可以比較的
  3,連線
  $a$b
  或者
  $string
  4,翻轉
  方法一:
  使用rev命令
  方法二:
  編寫指令碼實現
  #!/usr/bin/awk -f
  ################################################################
  # Description : duplicate rev in awk
  ################################################################
  {
  revline = ""
  for (i=1;i<=length;i++)
  {
  revline = substr(,i,1) revline
  }
  }
  END{print revline}
  5,匹配
  grep
  egrep
  fgrep
  6,排序
  7,替換
  bash中:
  %x=abcdabcd 
  %echo $ # 只替換一個 
  bbcdabcd 
  %echo $ # 替換所有 
  bbcdbbcd 
  sh中:
  ??
  如何替換/
  使用sed
  替換所有匹配
  echo $test |sed ’s/xx/yy’
  替換單個匹配
  ??
  8,得到字串的長度:
  bash當中
  $
  或者
  expr "$VAR" : ’.*’
  9,判斷字串是否為數字
  10,得到字串中某個字元的重複次數
  echo $a |tr "x" "/n" |wc -l
  得到的結果需要減去1
  或者
  echo $a |awk -F"x" ’{print NF-1}’
  11,得到字串中某個string的重複次數
  12,將一批檔案中的所有string替換
  for i in file_list 
  do 
  vi $i <<-! 
  :g/xxxx/s//XXXX/g 
  :wq 
  ! 
  done
  13,如何將字串內每兩個字元中間插入一個字元
  使用sed
  echo $test |sed ’s/../&[insert char]/g’

相關文章