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

Chinaunix

標(biāo)題: awk指定RS時(shí)空行怎么處理的? [打印本頁]

作者: 287380917    時(shí)間: 2016-05-06 11:08
標(biāo)題: awk指定RS時(shí)空行怎么處理的?
初學(xué)SHELL,翻看本板塊以前的問題,發(fā)現(xiàn)一個(gè)很有意思的現(xiàn)象,百思不得其解,望各位大牛解惑。
  1. yu@yu-vm:~/6$ echo "1,2,3,,4,5,,6,,7,,,8,,,,"|awk -vRS=, '$0&&$0<5{print $0}'
  2. 1
  3. 2
  4. 3
  5. 4


  6. yu@yu-vm:~/6$ echo "1,2,3,,4,5,,6,,7,,,8,,,,"|awk -vRS=, '$0&&$0<5{print $0"1"}'
  7. 11
  8. 21
  9. 31
  10. 41

  11. 1
  12. yu@yu-vm:~/6$ echo "1,2,3,,4,5,,6,,7,,,8,,,,"|awk -vRS=, '$1&&$0<5{print $0"1"}'
  13. 11
  14. 21
  15. 31
  16. 41
  17. yu@yu-vm:~/6$
復(fù)制代碼
使用正常的文件,不指定RS的時(shí)候,就算文本的末尾有很多空行,這邊判斷$1或者$0不存在時(shí)都能正常工作。但是指定了RS之后,如果判斷$0是否存在時(shí)就出現(xiàn)了這個(gè)很奇怪的現(xiàn)象了。
不太懂為什么echo "1,2,3,,4,5,,6,,7,,,8,,,,"|awk -vRS=, '$0&&$0<5{print $0"1"}'這樣的時(shí)候會(huì)打印一個(gè)空行及最后的1
作者: jason680    時(shí)間: 2016-05-06 11:20
本帖最后由 jason680 于 2016-05-06 11:20 編輯

回復(fù) 1# 287380917

http://72891.cn/thread-2309494-1-1.html


$ echo "1,,4,5,,8,,"|awk -vRS=, '$0&&$0<5{print "<"$0">1"}'
<1>1
<4>1
<
>
1

$ echo "1,,4,5,,8,,"|awk -vRS=, '$0&&$0<5{print "<"$0">1"}' | hexdump -C
00000000  3c 31 3e 31 0a 3c 34 3e  31 0a 3c 0a 3e 31 0a     |<1>1.<4>1.<.>1.|
0000000f

$ echo "1,,4,5,,8,,"| hexdump -C
00000000  31 2c 2c 34 2c 35 2c 2c  38 2c 2c 0a              |1,,4,5,,8,,.|
0000000c

   
作者: cao627    時(shí)間: 2016-05-06 11:21
$ echo -n "1,2,3,,4,5,,6,,7,,,8,,,,"|awk -vRS=, '$0&&$0<5{print $0"1"}'
11
21
31
41


-n的意思是不讓echo換行。所以是由于awk解析到最后一行有換行\(zhòng)n 不為空

作者: 287380917    時(shí)間: 2016-05-06 11:30
回復(fù) 2# jason680

非常感謝!
   
作者: cao627    時(shí)間: 2016-05-06 11:32
二樓代碼正好解釋了\n問題。最后一行為$0=\n,  $0&&$0<5成立 執(zhí)行print "<"$0">1"就是執(zhí)行 print "<\n>1" ,就輸出成了:
<
>1




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