亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: awk雙導管分割問題 [打印本頁]

作者: CU_Solaris    時間: 2009-09-16 15:59
標題: awk雙導管分割問題
大牛們,我有個awk分割的問題

系統(tǒng)版本如下
$ uname -a
SunOS shreuter1 5.8 Generic_117350-62 sun4u sparc SUNW,Sun-Blade-100

我有一組數(shù)據(jù),形如

aaa||bbb||ccc||ddd

使用兩個管道號分割,于是我用如下語句想取出aaa,bbb,ccc,ddd
$N 其中的N應該等于1~4即可
echo "aaa||bbb||ccc||ddd" |awk 'BEGIN {FS="||"} {print $N}'

但是實際的情況如下,1,3,5,7才是我取出的數(shù)據(jù),2,4,6為空


  1. $ echo "aaa||bbb||ccc||ddd" |awk 'BEGIN {FS="||"} {print $1}'
  2. aaa
  3. $ echo "aaa||bbb||ccc||ddd" |awk 'BEGIN {FS="||"} {print $2}'

  4. $ echo "aaa||bbb||ccc||ddd" |awk 'BEGIN {FS="||"} {print $3}'
  5. bbb
  6. $ echo "aaa||bbb||ccc||ddd" |awk 'BEGIN {FS="||"} {print $4}'

  7. $ echo "aaa||bbb||ccc||ddd" |awk 'BEGIN {FS="||"} {print $5}'
  8. ccc
  9. $ echo "aaa||bbb||ccc||ddd" |awk 'BEGIN {FS="||"} {print $6}'

  10. $ echo "aaa||bbb||ccc||ddd" |awk 'BEGIN {FS="||"} {print $7}'
  11. ddd
復制代碼


如果把雙導管號改成單個導管,沒有上述問題


  1. $ echo "aaa|bbb|ccc|ddd" |awk 'BEGIN {FS="|"} {print $1}'
  2. aaa
  3. $ echo "aaa|bbb|ccc|ddd" |awk 'BEGIN {FS="|"} {print $2}'
  4. bbb
  5. $ echo "aaa|bbb|ccc|ddd" |awk 'BEGIN {FS="|"} {print $3}'
  6. ccc
  7. $ echo "aaa|bbb|ccc|ddd" |awk 'BEGIN {FS="|"} {print $4}'
  8. ddd
復制代碼


不知道為何  雙導管分割有問題

如何使其正常顯示,因為這樣的格式我在實際使用中經(jīng)常遇到,經(jīng)常需要分割

謝謝大牛們了
作者: ly5066113    時間: 2009-09-16 16:03
標題: 回復 #1 CU_Solaris 的帖子
$ echo "aaa||bbb||ccc||ddd" |awk 'BEGIN {FS="\\|\\|"} {print $2}'
bbb
$ echo "aaa||bbb||ccc||ddd" |awk 'BEGIN {FS="[|][|]"} {print $2}'
bbb
作者: blackold    時間: 2009-09-16 16:03
FS="[|][|]"
作者: lucash    時間: 2009-09-16 16:08
FS="[|]+"
作者: CU_Solaris    時間: 2009-09-16 16:08
ly5066113 大哥,您用的是什么版本的什么操作系統(tǒng)?
作者: CU_Solaris    時間: 2009-09-16 16:09
$ echo "aaa||bbb||ccc||ddd" |awk 'BEGIN {FS="\\|\\|"} {print $1}'
aaa||bbb||ccc||ddd
$ echo "aaa||bbb||ccc||ddd" |awk 'BEGIN {FS="[|][|]"} {print $1}'
aaa||bbb||ccc||ddd


我這邊全都出來了,沒分割
作者: ly5066113    時間: 2009-09-16 16:11
標題: 回復 #5 CU_Solaris 的帖子
Linux

如果你是Solaris,那么用nawk代替awk試試。
作者: CU_Solaris    時間: 2009-09-16 16:13
原帖由 ly5066113 于 2009-9-16 16:11 發(fā)表
Linux

如果你是Solaris,那么用nawk代替awk試試。

解決了

$ echo "aaa||bbb||ccc||ddd" |nawk 'BEGIN {FS="\\|\\|"} {print $1}'
aaa
$ echo "aaa||bbb||ccc||ddd" |nawk 'BEGIN {FS="\\|\\|"} {print $2}'
bbb


解決了
為何Solaris的awk不支持?
作者: CU_Solaris    時間: 2009-09-16 16:17
找到區(qū)別了,我再去研究研究,嘿嘿



  1. 在 20 世紀 80 年代中期,對 AWK 語言進行了更新,并不同程度地使用一種稱為 NAWK (New AWK) 的增強版本對其進行了替換。許多系統(tǒng)中仍然存在著舊的 AWK 解釋器,但通常將其安裝為 oawk (Old AWK) 命令,而 NAWK 解釋器則安裝為主要的 awk 命令,也可以使用 nawk 命令。Dr. Kernighan 仍然在對 NAWK 進行維護,與 GAWK 一樣,它也是開放源代碼的,并且可以免費獲得。
  2. GAWK 是 GNU Project 的 AWK 解釋器的開放源代碼實現(xiàn)。盡管早期的 GAWK 發(fā)行版是舊的 AWK 的替代程序,但不斷地對其進行了更新,以包含 NAWK 的特性。
復制代碼

作者: ly5066113    時間: 2009-09-16 16:18
標題: 回復 #8 CU_Solaris 的帖子
這個你要去問Sun了,為什么在Solaris上裝了這種版本的awk。
作者: Minsic    時間: 2009-09-16 16:41
solaris上的nawk還是遠不如gawk啊,比如沒有一些時間函數(shù),還不支持太長的字段(具體多少忘了 - -),如果需要而且可以的話,在solaris上裝個gawk好了
作者: CU_Solaris    時間: 2009-09-16 16:44
原帖由 Minsic 于 2009-9-16 16:41 發(fā)表
solaris上的nawk還是遠不如gawk啊,比如沒有一些時間函數(shù),還不支持太長的字段(具體多少忘了 - -),如果需要而且可以的話,在solaris上裝個gawk好了

生產(chǎn)機,不能亂裝東西。。。

哎~~~自己虛擬機上我搞搞
作者: marksman201    時間: 2009-09-17 15:23
標題: 回復 #2 ly5066113 的帖子
能不能解釋一下"\\|\\|"和"[|][|]"?
為什么它們就行,而"||"就不行?
作者: over12    時間: 2009-10-12 21:51
標題: 回復 #1 CU_Solaris 的帖子
echo "aaa||bbb||ccc||ddd" |awk -F'|' '{for(i=1;i<=NF;i=i+2) print $i}'
aaa
bbb
ccc
ddd




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2