Ubuntu 上 sed 和文本文件的奇怪行为

Ubuntu 上 sed 和文本文件的奇怪行为

好的,首先,我正在使用 Ubuntu 14.04.5 LTS 的 VPS

我尝试使用 sed 操作多个文本文件,但结果并不理想,我找不到原因。即使对其他用户有用的简单操作对我来说也不起作用。例如:我有一个包含几千行的文件,我使用命令行发出此 sed 命令:

sed -n '/ID=stnr/,+1 p;/ID=stnr/,+1 p' /tmp/bigfile.txt >/tmp/filterfile.txt

这会创建一个包含几百行的 filterfile.txt。然后我需要在该文件的开头插入第三个文件。这时,事情开始变得奇怪了。什么都没起作用,我甚至尝试插入一个简单的空白行

sed -i '1i\\' /tmp/filterfile.txt

应该可以工作,所以它说这里 我尝试了不同的变化

sed -i '1i\\' /tmp/filterfile.txt
awk 'BEGIN{print""}1' /tmp/filterfile.txt > /tmp/temp.txt
echo | cat - /tmp/filterfile.txt

但什么都没起作用!文件大小从 88 669 变为 88 670,但文件中没有新行。我做错了什么?我是否错过了一些基本步骤?

关于我需要帮助的另一个话题这里,结束代码工作正常,但即使这样也不会产生新行... 而 @steeldriver 说我的文件可以不终止... 我真的不明白... 使用 sed 创建文件后,我是否还需要执行其他步骤... ?? 我的操作系统有问题吗?此时一切都会好起来,因为我对此真的很困惑

编辑:添加了/tmp/bigfile.txt-只需几千行这样的内容

id=sdev user="jackinthebox" logged in ="18/04/2015" logged out= "18/04/2015"
alphanum=uufbhueklslnj
id=rgtj user="breakingeven" logged in ="17/04/2015" logged out= "17/04/2018"
alphanum=54ervbv45
id=stnr user="anotherme" logged in ="17/04/2015" logged out= "17/04/2018"
alphanum=oihj034fm
id=iorg user="nowayjose" logged in ="17/04/2015" logged out= "17/04/2018"
alphanum=ijpqw5wv6

然后是/tmp/filterfile.txt:

id=stnr user="anotherme" logged in ="17/04/2015" logged out= "17/04/2018"
alphanum=oihj034fm

最后是第三个文件

some random info 

答案1

好的,我刚刚发现了错误,我想我知道@steeldriver 的意思

原始文件是在 Windows 中创建的...因此在由 var “处理”之前,应将其转换为 unix 格式(我使用了 dos2unix)。希望它能对某些人有所帮助...

相关内容