學(xué)習(xí)啦>學(xué)習(xí)電腦>操作系統(tǒng)>Linux教程>

linux的scan命令

時(shí)間: 佳洲1085 分享

  Linux下scan命令主要是以scanf的形式使用轉(zhuǎn)換符解析字符串,下面由學(xué)習(xí)啦小編為大家整理了linux下scan命令的相關(guān)知識(shí),希望對(duì)大家有幫助!

  linux的scan命令詳解

  scan - 以sscanf的形式使用轉(zhuǎn)換符解析字符串

  語(yǔ)法:

  scan string format ?varName varName ...?

  介紹:

  scan命令根據(jù)format的格式解析string并給varName賦值,返回成功轉(zhuǎn)換的次數(shù)。如果沒(méi)有提供varName,將以列表形式返回scan匹配值

  scan命令和format命令類似.支持的轉(zhuǎn)換字符如下:

  d

  輸入必須為一個(gè)十進(jìn)制整數(shù)。其被讀入并以十進(jìn)制字符串方式存入變量。如果提供l或者L此類修改器字符,則掃描的值將以64-bit形式表示

  o

  輸入必須為一個(gè)八進(jìn)制整數(shù)。其被讀入并以十進(jìn)制字符串方式存入變量。如果提供l或者L此類修改器字符,則掃描的值將以64-bit形式表示。如果其值超過(guò)MAX_INT(當(dāng)沒(méi)有l(wèi)或者L時(shí),32-bit平臺(tái)為017777777777),將被截?cái)喑梢粋€(gè)有符號(hào)整形數(shù)。因此,037777777777 在32-bit機(jī)器上默認(rèn)將被表示為-1

  x

  輸入必須為一個(gè)十六進(jìn)制整形數(shù)。其被讀入并以十進(jìn)制字符串方式存入變量。如果提供l或者L此類修改器字符,則掃描的值將以64-bit形式表示。如果其值超過(guò)MAX_INT(當(dāng)沒(méi)有l(wèi)或者L時(shí),32-bit平臺(tái)為017777777777),將被截?cái)喑梢粋€(gè)有符號(hào)整形數(shù)。因此,037777777777 在32-bit機(jī)器上默認(rèn)將被表示為-1

  u

  輸入必須為一個(gè)十進(jìn)制整形數(shù)。其被讀入并以無(wú)符號(hào)十進(jìn)制字符串方式存入變量。如果提供l或者L此類修改器字符,則掃描的值將以64-bit形式表示。

  i

  輸入必須為一個(gè)整形數(shù)。進(jìn)制取決于如expr描述的方式。其被讀入并以無(wú)符號(hào)十進(jìn)制字符串方式存入變量。如果提供l或者L此類修改器字符,則掃描的值將以64-bit形式表示。

  c

  輸入為單字符其二進(jìn)制值以十進(jìn)制字符串形式保存在變量中。初始的空格在這種情況下不會(huì)被跳過(guò),所以輸入可以使空格。這個(gè)轉(zhuǎn)換不同于ANSI標(biāo)準(zhǔn)(輸入永遠(yuǎn)由單字符組成并且沒(méi)有指定域?qū)挾?

  s

  輸入由直到下一個(gè)空白符的所有字符組成;字符會(huì)復(fù)制給變量

  e f g

  輸入必須為由可選的符號(hào),十進(jìn)制字符串以及小數(shù)點(diǎn)組成的浮點(diǎn)數(shù),可選的指數(shù)由e或者E后跟可選符號(hào)以及十進(jìn)制字符串。其被讀入并以浮點(diǎn)型字符串方式存入變量。

  [chars]

  輸入由任意數(shù)目的字符組成。匹配的字符串存在變量中。用于匹配一組某一范圍的字符,用-表示范圍,如果-出現(xiàn)在最先或者最后被當(dāng)做一個(gè)字符

  [^chars]

  輸入由任意數(shù)目的字符組成。匹配的字符串存在變量中。用于匹配一組某一范圍的字符以外的部分,用-表示范圍,如果-出現(xiàn)在最先或者最后被當(dāng)做一個(gè)字符

  n

  不輸入任何字符。掃描字符的總數(shù)取自最近掃描后所存儲(chǔ)的變量

  linux的scan命令實(shí)例

  將一個(gè)簡(jiǎn)單的顏色代碼(#RRGGBB方式)解析為不同域的值

  set string "#08D03F"

  scan $string "#%2x%2x%2x" r g b

  解析HH:MM時(shí)間字符串,注意避免通過(guò)強(qiáng)制轉(zhuǎn)換十進(jìn)制而帶來(lái)的八進(jìn)制數(shù)問(wèn)題

  set string "08:08" ;# *Not* octal!

  if {[scan $string "%d:%d" hours minutes] != 2} {

  error "not a valid time string"

  }

  # We have to understand numeric ranges ourselves...

  if {$minutes < 0 || $minutes > 59} {

  error "invalid number of minutes"

  }

  將一個(gè)字符串分解成非空格字符的一系列集合(注意使用%n轉(zhuǎn)換使得能夠跳過(guò)第一個(gè)空格的字符)

  set string " a string {with braced words} + leading space "

  set words {}

  while {[scan $string %s%n word length] == 2} {

  lappend words $word

  set string [string range $string $length end]

  }

  解析一個(gè)簡(jiǎn)單的坐標(biāo)字符串,通過(guò)查找顯式終止字符檢查是否完成

  set string "(5.2,-4e-2)"

  # Note that the spaces before the literal parts of

  # the scan pattern are significant, and that ")" is

  # the Unicode character \u0029

  if {

  [scan $string "(%f,%s %c" x y last] != 3

  || $last != 0x0029

  } then {

  error "invalid coordinate string"

  }

  puts "X=$x, Y=$y"

linux的scan命令

Linux下scan命令主要是以scanf的形式使用轉(zhuǎn)換符解析字符串,下面由學(xué)習(xí)啦小編為大家整理了linux下scan命令的相關(guān)知識(shí),希望對(duì)大家有幫助! linux的scan命令詳解 scan - 以sscanf的形式使用轉(zhuǎn)換符解析字符串 語(yǔ)法: scan string format ?va
推薦度:
點(diǎn)擊下載文檔文檔為doc格式
3630676