初学SHELL,翻看本板块以前的问题,发现一个很有意思的现象,百思不得其解,望各位大牛解惑。- yu@yu-vm:~/6$ echo "1,2,3,,4,5,,6,,7,,,8,,,,"|awk -vRS=, '$0&&$0<5{print $0}'
- 1
- 2
- 3
- 4
- yu@yu-vm:~/6$ echo "1,2,3,,4,5,,6,,7,,,8,,,,"|awk -vRS=, '$0&&$0<5{print $0"1"}'
- 11
- 21
- 31
- 41
- 1
- yu@yu-vm:~/6$ echo "1,2,3,,4,5,,6,,7,,,8,,,,"|awk -vRS=, '$1&&$0<5{print $0"1"}'
- 11
- 21
- 31
- 41
- yu@yu-vm:~/6$
复制代码 使用正常的文件,不指定RS的时候,就算文本的末尾有很多空行,这边判断$1或者$0不存在时都能正常工作。但是指定了RS之后,如果判断$0是否存在时就出现了这个很奇怪的现象了。
不太懂为什么echo "1,2,3,,4,5,,6,,7,,,8,,,,"|awk -vRS=, '$0&&$0<5{print $0"1"}'这样的时候会打印一个空行及最后的1 |