我一直在注意行尾'\ n'的行为,但我不明白,因此我提出了以下“测试”。我在Mac OS X上。
我有一个文件:
one two
three four five
six seven
然后我跑
x=$(awk '{print}' filename.txt)
和
echo "$x"
正确打印(即上述文件的内容)。
但是,当我这样做
y=$(echo $x | tr "\n" "N")
(我的意思是将新行'\ n'转换为大写字母'N',只是为了看看会发生什么),然后我得到
one two three four five six sevenN
似乎所有出现的'\ n'都被检测到了(因为输出在一行上),但是没有被'N'代替,而最后一个实例发生了。
最后一个字符(在文件末尾)是否与其他换行符不同?
我不知道发生了什么。
编辑
我可以想到最后一行与另一行之间的区别。 awk
在除最后一行之外的所有行的末尾都看到一个新行字符\n
,并且在打印时会添加另一个这样的新行。因此,我需要用N
替换 double 新行。
另一方面,为什么我看不到两个 N
?
最后一行的末尾只有一个'\ n',并由N
代替。
这接近解释了吗?