tr(unix翻译)如何处理行?

时间:2018-11-05 13:24:46

标签: newline tr

我一直在注意行尾'\ 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代替。

这接近解释了吗?

0 个答案:

没有答案