我有一些文本文件,我需要在文件的每一行的开头添加1个字符。 在Windows中,我发现快速执行此操作的方法是安装Cygwin并使用以下命令,该命令将字母N添加到文件的每一行:
$ sed 's/^/N/' inputFile.txt > outputFile.txt
我发现奇怪的是,在我在每行的前面添加一个新字符后,文件大小几乎完全没有变化。我进一步测试了这一点,看看我是否可以通过以下步骤重新创建问题:
执行以下命令创建另一个文件,该文件有10,000行" NTEST"
$ sed 's/^/N/' Test.txt > "SEDTest.txt"
结果
"试验"和" SEDTest"几乎完全相同的大小,而#34; TestWithNPrefix"大了10KB。
Test = 59,998 Bytes; SEDTest = 59,999 Bytes; TestWithNPrefix = 69,998 Bytes
当我跑出" fc"在命令提示符中的命令,它返回" SEDTest"之间没有差异。和" TestWithNPrefix"。 " FC"介于" SEDTest"和"测试"返回" Resync Filed。文件太不同了#34;
有人可以帮我理解造成这些文件大小差异的原因吗?
编辑:我创建了文件" Test.txt"和" TestWithNPrefix.txt"在UltraEdit中。我只输入了" TEST" /" NTEST",然后复制并粘贴了10,000次。
答案 0 :(得分:2)
不是答案,而是格式化评论:
你似乎遇到了DOS与Unix行结尾的奇怪情况。我不得不问:你是如何创建文件的?我希望10,000行“TEST \ r \ n”的大小正好是60,000字节,而不是59,999
在Linux上(目前我无法访问cygwin环境):'
$ yes $'TEST\r' | head -n 10000 > Test
$ ll Test
-rw-r--r-- 1 jackman jackman 60000 Jan 8 13:06 Test
$ sed 's/^/N/' Test > SEDTest
$ ll *Test
-rw-r--r-- 1 jackman jackman 70000 Jan 8 13:06 SEDTest
-rw-r--r-- 1 jackman jackman 60000 Jan 8 13:06 Test