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

Chinaunix

標(biāo)題: AWK求助,高手幫忙看看 [打印本頁]

作者: 光明曉仙    時(shí)間: 2003-09-10 15:04
標(biāo)題: AWK求助,高手幫忙看看
數(shù)據(jù)文件:tmp111
------------------------------------------------------------------------------
1231005010|蘇義|1231005010|2003/06/25|2003/08/25|200000.0|0.0|6.3
1231017864|蘇義強(qiáng)|1231017864|2001/04/29|2001/08/30|10000.0|0.0|6.975
1231017911|黃偉|1231017911|2003/07/07|2004/07/03|200000.0|0.0|6.6375
1231021548|黃偉希|1231021548|2001/04/18|2001/10/18|20000.0|10000.0|6.975
1231023511|張三|1231023511|2003/01/07|2003/07/06|15000.0|0.0|6.3
1231024763|李四|1231024763|2000/08/11|2001/08/11|10000.0|0.0|7.3125
1231030010|蘇義紅|1231030010|2001/12/27|2002/12/26|60000.0|38000.0|7.3125
1231042038|蘇義紅|1231042038|2003/02/27|2003/12/20|40000.0|0.0|6.6375
1231042190|王五|1231042190|2001/06/21|2001/11/21|20000.0|10000.0|6.975
1231053035|趙六|1231053035|2001/07/20|2001/07/24|30000.0|0.0|6.975
1231053510|孫七|1231053510|2002/02/08|2002/08/08|50000.0|0.0|6.975
1231054277|李八|1231054277|2002/04/18|2002/12/18|50000.0|0.0|6.6375

--------------------------
echo "請輸入日期[yyyy/mm/dd]:\c"
read yqrq
awk 'BEGIN { FS="|"} { OFS="|" } { if ( $5 <= "$yqrq" ) print $0 }' tmp111 > yqdkjg

我輸入的日期不起作用這是怎么回事呀........
設(shè)定yqrq=`date '+%Y%m%d'`也沒結(jié)果
但直接在awk里用awk 'BEGIN { FS="|"} { OFS="|" } { if ( $5 <= "2003/09/10" ) print $0 }' tmp111 > yqdkjg
又有結(jié)果,這是怎么回事呀,請高手幫忙
作者: admirer    時(shí)間: 2003-09-10 15:08
標(biāo)題: AWK求助,高手幫忙看看
原帖由 "光明曉仙"]echo "請輸入日期[yyyy/mm/dd 發(fā)表:
:\c"
read yqrq
awk 'BEGIN { FS="|"} { OFS="|" } { if ( $5 <= "$yqrq" ) print $0 }' tmp111 > yqdkjg
我輸入的日期不起作用這是怎么回事呀........
設(shè)定yqrq=`date '+%Y%m%d'`也沒結(jié)果
但直接在awk里用awk 'BEGIN { FS="|"} { OFS="|" } { if ( $5 <= "2003/09/10" ) print $0 }' tmp111 > yqdkjg
又有結(jié)果,這是怎么回事呀,請高手幫忙

read yqrq
awk 'BEGIN { FS="|";OFS="|" } { if ( $5 <= '"$yqrq"' ) print $0 }' tmp111 > yqdkjg
作者: bjgirl    時(shí)間: 2003-09-10 16:20
標(biāo)題: AWK求助,高手幫忙看看
[quote]原帖由 "admirer"]) print $0 }' tmp111 > yqdkjg[/quote 發(fā)表:
     
我感覺
if ( $5 <= '"$yqrq"' )
這段有問題呀~~,而且照版主GG的寫法運(yùn)行后結(jié)果跟原來一樣呀!!
我想主要也許是$5中的字符串不是簡單的數(shù)值.所以無法進(jìn)行>=之類的算術(shù)運(yùn)算.
作者: admirer    時(shí)間: 2003-09-10 16:35
標(biāo)題: AWK求助,高手幫忙看看
原帖由 "bjgirl" 發(fā)表:
   
我感覺
if ( $5 <= '"$yqrq"' )
這段有問題呀~~,而且照版主GG的寫法運(yùn)行后結(jié)果跟原來一樣呀!!
我想主要也許是$5中的字符串不是簡單的數(shù)值.所以無法進(jìn)行>=之類的算術(shù)運(yùn)算.

你說的對!當(dāng)時(shí)沒有測試,只是從結(jié)構(gòu)上進(jìn)行了修改?磥淼昧硐朕k法了!
作者: admirer    時(shí)間: 2003-09-10 16:53
標(biāo)題: AWK求助,高手幫忙看看
  1. #!/bin/sh
  2. printf "input date(yyyy/mm/dd):"
  3. read a
  4. while read line
  5. do
  6. echo "${line}"|sed -n -e "s:$a:&:p"
  7. done <yourdatafile
復(fù)制代碼

作者: bjgirl    時(shí)間: 2003-09-10 17:51
標(biāo)題: AWK求助,高手幫忙看看
效果是顯示小于用戶輸入日期的資料

  1. #!/bin/ksh
  2. #scriptname:_sort
  3. read input?"請輸入日期[yyyy/mm/dd]:"
  4. var=$(cat urfile|awk -F\| 'BEGIN{OFS="|"}{print $5,$1,$2,$3,$4,$6,$7,$8}'|sort
  5. -M)
  6. line=$(echo $var|tr ' ' '\n'|nl|grep $input|awk '{print $1}')
  7. echo $var|tr ' ' '\n'|nl|sed -n "1,${line}p"|awk '{print $2}'|awk -F\| 'BEGIN{OFS="|"}{print $2,$3,$4,$5,$1,$6,$7,$8}'
復(fù)制代碼

結(jié)果:

  1. $_sort
  2. 請輸入日期[yyyy/mm/dd]:2002/08/08
  3. 1231053035|趙六|1231053035|2001/07/20|2001/07/24|30000.0|0.0|6.975
  4. 1231024763|李四|1231024763|2000/08/11|2001/08/11|10000.0|0.0|7.3125
  5. 1231017864|蘇義強(qiáng)|1231017864|2001/04/29|2001/08/30|10000.0|0.0|6.975
  6. 1231021548|黃偉希|1231021548|2001/04/18|2001/10/18|20000.0|10000.0|6.975
  7. 1231042190|王五|1231042190|2001/06/21|2001/11/21|20000.0|10000.0|6.975
  8. 1231053510|孫七|1231053510|2002/02/08|2002/08/08|50000.0|0.0|6.975
復(fù)制代碼

作者: admirer    時(shí)間: 2003-09-10 19:04
標(biāo)題: AWK求助,高手幫忙看看
[quote]原帖由 "bjgirl"]效果是顯示小于用戶輸入日期的資料[/quote 發(fā)表:

不中用了,又把“<=”的條件給忘了!唉.....
這樣把,補(bǔ)償一下
  1. #!/bin/ksh
  2. #filename:selectdate.sh
  3. printf "Input your date(yyyy/mm/dd):"
  4. read a
  5. sort -t"|" -k 5 aa.t >/tmp/t_$$
  6. b=$(grep -n "$a" /tmp/t_$$|cut -d: -f1|sed -n '$p')
  7. sed -n "1,$"p /tmp/t_$$
  8. rm /tmp/t_$$
復(fù)制代碼
  1. #selectdate.sh
  2. Input your date(yyyy/mm/dd):2002/12/18
  3. 1231053035|趙六|1231053035|2001/07/20|2001/07/24|30000.0|0.0|6.975
  4. 1231024763|李四|1231024763|2000/08/11|2001/08/11|10000.0|0.0|7.3125
  5. 1231017864|蘇義強(qiáng)|1231017864|2001/04/29|2001/08/30|10000.0|0.0|6.975
  6. 1231021548|黃偉希|1231021548|2001/04/18|2001/10/18|20000.0|10000.0|6.975
  7. 1231042190|王五|1231042190|2001/06/21|2001/11/21|20000.0|10000.0|6.975
  8. 1231053510|孫七|1231053510|2002/02/08|2002/08/08|50000.0|0.0|6.975
  9. 1231054277|李八|1231054277|2002/04/18|2002/12/18|50000.0|0.0|6.6375
復(fù)制代碼

作者: bjgirl    時(shí)間: 2003-09-10 19:18
標(biāo)題: AWK求助,高手幫忙看看

  1. sort -t"|" -k 5
復(fù)制代碼

這句是關(guān)鍵所在!(這次知道了sort的用法啦),
謝謝版主!
作者: 光明曉仙    時(shí)間: 2003-09-10 19:30
標(biāo)題: AWK求助,高手幫忙看看
謝謝admirer 和bjgirl 問題是解決了

我的目的正是要求小于等于輸入日期的數(shù)據(jù)
我不明白的就是直接用
awk 'BEGIN { FS="|"} { OFS="|" } { if ( $5 <= "2002/09/10" ) print $0 }' tmp111 > yqdkjg
可以得出正確結(jié)果,而用變量卻沒法得出正確結(jié)果
作者: admirer    時(shí)間: 2003-09-10 19:48
標(biāo)題: AWK求助,高手幫忙看看
原帖由 "光明曉仙" 發(fā)表:
謝謝admirer 和bjgirl 問題是解決了

我的目的正是要求小于等于輸入日期的數(shù)據(jù)
我不明白的就是直接用
awk 'BEGIN { FS="|"} { OFS="|" } { if ( $5 <= "2002/09/10" ) print $0 }' tmp111 > yqdkjg
可以?.........
  
哦!
經(jīng)過推敲,應(yīng)該是變量替換時(shí)出的問題,awk在引用系統(tǒng)變量時(shí)并不給他一個(gè)引號"作為字符串處理,所以不能于$5所表示的字符串進(jìn)行比較,證據(jù)如下:
設(shè)變量yqrq="2002/12/18"
awk 'BEGIN { FS="|"} { OFS="|" } { if ( $5 <= "'"$yqrq"'") print $0 }' datafile
  1. 1231017864|蘇義強(qiáng)|1231017864|2001/04/29|2001/08/30|10000.0|0.0|6.975
  2. 1231021548|黃偉希|1231021548|2001/04/18|2001/10/18|20000.0|10000.0|6.975
  3. 1231024763|李四|1231024763|2000/08/11|2001/08/11|10000.0|0.0|7.3125
  4. 1231042190|王五|1231042190|2001/06/21|2001/11/21|20000.0|10000.0|6.975
  5. 1231053035|趙六|1231053035|2001/07/20|2001/07/24|30000.0|0.0|6.975
  6. 1231053510|孫七|1231053510|2002/02/08|2002/08/08|50000.0|0.0|6.975
  7. 1231054277|李八|1231054277|2002/04/18|2002/12/18|50000.0|0.0|6.6375
復(fù)制代碼

另外還可以使用awk的"-v"解決變量問題:
  1. awk -v a=$yqrq 'BEGIN { FS="|"} { OFS="|" } { if ( $5 <= a) print $0 }' datafile
  2. 1231017864|蘇義強(qiáng)|1231017864|2001/04/29|2001/08/30|10000.0|0.0|6.975
  3. 1231021548|黃偉希|1231021548|2001/04/18|2001/10/18|20000.0|10000.0|6.975
  4. 1231024763|李四|1231024763|2000/08/11|2001/08/11|10000.0|0.0|7.3125
  5. 1231042190|王五|1231042190|2001/06/21|2001/11/21|20000.0|10000.0|6.975
  6. 1231053035|趙六|1231053035|2001/07/20|2001/07/24|30000.0|0.0|6.975
  7. 1231053510|孫七|1231053510|2002/02/08|2002/08/08|50000.0|0.0|6.975
  8. 1231054277|李八|1231054277|2002/04/18|2002/12/18|50000.0|0.0|6.6375
復(fù)制代碼
   

這叫吃一塹長一智吧!這個(gè)實(shí)例值得大家汲。/[size]
作者: 光明曉仙    時(shí)間: 2003-09-10 20:58
標(biāo)題: AWK求助,高手幫忙看看
呵呵admirer哥真厲害,這下子我全明白了。。。。
-------------
第一個(gè)好用
-------------
echo "請輸入日期[yyyy/mm/dd]:\c"
read yqrq
awk 'BEGIN { FS="|"} { OFS="|" } { if ( $5 <= "$yqrq" ) print $0 }' tmp111 > yqdkjg
---------------
第二個(gè)也好用
---------------
echo "請輸入日期[yyyy/mm/dd]:\c"
read yqrq
awk -v a=$yqrq 'BEGIN { FS="|"} { OFS="|" } { if ( $5 <= a) print $0 }'  tmp111 > yqdkjg

-------------------
再次表示感謝........
作者: bjgirl    時(shí)間: 2003-09-10 21:06
標(biāo)題: AWK求助,高手幫忙看看
AWK太厲害啦~~~,區(qū)區(qū)一行就搞定啦,要求版主GG給個(gè)精華吧~
另外.再問一個(gè)排序的問題,如何根據(jù)人的名字的漢語拼音的順序來排列,比如曹操.流被..張非
我可以把單個(gè)的漢字按拼音的順序排,但是多個(gè)漢字,比如王五和趙六,這樣就很頭疼啦 ,望指教 謝謝
作者: admirer    時(shí)間: 2003-09-10 23:09
標(biāo)題: AWK求助,高手幫忙看看
原帖由 "光明曉仙" 發(fā)表:
呵呵admirer哥真厲害,這下子我全明白了。。。。
-------------
第一個(gè)好用
-------------
echo "請輸入日期[yyyy/mm/dd]:\c"
read yqrq
awk 'BEGIN { FS="|"} { OFS="|" } { if ( $5 <= "‘$yqrq’" ) print $0 }' tmp111 > yqdkjg
---------------
第二個(gè)也好用
---------------
echo "請輸入日期[yyyy/mm/dd]:\c"
read yqrq
awk -v a=$yqrq 'BEGIN { FS="|"} { OFS="|" } { if ( $5 <= a) print $0 }' tmp111 > yqdkjg

-------------------
再次表示感謝........
   

感謝的不要,代碼規(guī)則的特要!
echo "請輸入日期[yyyy/mm/dd]:\c"
read yqrq
awk -v a=$yqrq 'BEGIN { FS="|";OFS="|" } { if ( $5 <= a) print $0 }' tmp111 > yqdkjg

否則{ OFS="|" }他要執(zhí)行N(N=文件行數(shù))遍,可以驗(yàn)證,另外你的輸出使用了$0所以OFS的定義將被忽略!
作者: 光明曉仙    時(shí)間: 2003-09-10 23:59
標(biāo)題: AWK求助,高手幫忙看看
嘿嘿,謝謝AD哥指點(diǎn),我原來哪懂呀。只要腳本沒報(bào)錯(cuò)就算通過了。。。
是不是這句里OFS可以不要結(jié)果也是一樣的?
這兩天真是學(xué)到不少有用的東西,爽啊........
作者: pzhwhs1967    時(shí)間: 2003-09-11 11:48
標(biāo)題: AWK求助,高手幫忙看看
echo "請輸入日期[yyyy/mm/dd]:\c"
read yqrq
awk 'BEGIN { FS="|"} { OFS="|" } { if ( $5 <= aa ) print $0 }' aa=$yqrq mp111 > yqdkjg
也行!
作者: newince    時(shí)間: 2003-09-11 12:41
標(biāo)題: AWK求助,高手幫忙看看
佩服樓主的精神!
作者: xinchill    時(shí)間: 2004-04-26 21:26
標(biāo)題: AWK求助,高手幫忙看看
看過樓主的一些帖子
樓主真的很厲害。
佩服的啦




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