Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 将字符串压缩到文件中_Unix_Awk_Sed - Fatal编程技术网

Unix 将字符串压缩到文件中

Unix 将字符串压缩到文件中,unix,awk,sed,Unix,Awk,Sed,我有一个包含以下内容的文件,例如,我放置了3行: 12743002785468 |MOVIL APPLE IPHONE4 16GB BLANCO |NVEN |Centro de Atención VIP |0862034032 12747002147595 |MOVIL APPLE IPHONE4 16GB BLANCO |NVEN |Centro de Atención VIP

我有一个包含以下内容的文件,例如,我放置了3行:

12743002785468    |MOVIL APPLE IPHONE4 16GB BLANCO         |NVEN          |Centro de Atención  VIP            |0862034032
12747002147595    |MOVIL APPLE IPHONE4 16GB BLANCO         |NVEN          |Centro de Atención  VIP            |0862033996
我有一个可变日期20140430,我想将每个记录的开头连接起来,如下所示:

20140430|12743002785468    |MOVIL APPLE IPHONE4 16GB BLANCO         |NVEN          |Centro de Atención  VIP            |0862034032
20140430|12747002147595    |MOVIL APPLE IPHONE4 16GB BLANCO         |NVEN          |Centro de Atención  VIP            |0862033996
我试着用这个:

cat /home/file.txt | awk '{print "'"20140430"'""|"$0;}' > /home/file.txt

但是没有工作,我不能对我18万条记录的档案这样做。有人知道我如何连接吗?操作系统是SunOS 5.11 sun4v sparc sun4v 11.1
提前非常感谢

您也可以循环并附加:

while read line; do
   echo 20140430'|'$line
done < /home/file.txt > /home/file.txt.tmp
mv file.txt.tmp file.txt

这是因为您正在重定向到同一个文件。命令很好,只要重定向到另一个文件就可以了。另外,sed-i单独执行就地替换,所以不要重定向。这些命令应该已经完全删除了该文件的内容。抱歉,我尝试重定向到其他文件,例如file.tmp,但无法正常工作检查文件的内容,如@EtanReisner所说,如果您运行的命令完全符合规定,则会完全覆盖/home/file.txt。如果这些命令不是您实际运行的命令,则您需要向我们提供您执行的命令,并检查源文件的内容,并向我们提供您实际运行的命令的输出。非常好,我的朋友以最佳方式工作。多谢各位!
while read line; do
   echo 20140430'|'$line
done < /home/file.txt > /home/file.txt.tmp
mv file.txt.tmp file.txt