在运行unix命令时获取“ksh:no space” - error

时间:2014-04-11 05:57:20

标签: shell unix aix

我有一个文本文件WIDeletion2.txt,其示例文本如下。

$ head WIDeletion2.txt
5A1E7DF7C1C8BC4497FE3AD68954EF21 VA_ITSHOME
294A07B8ABDC454FABD0CD488B3FA51B VA_ITSHOME
C15A689952E4A14993B4787020258AEA VA_ITSHOME
C3E8CFE6FFBD3A45B37336D270940AC8 VA_ITSHOME
F69955919630784EB41FE8D0BE2A260F VA_ITSHOME
DD044FFD70FDED46AEA9205DA3435B24 VA_ITSHOME
0C678B5BC6531140BE92F40A0B727012 VA_ITSHOME

它包含大约90k这样的行。我想在每行的开头添加deletedwob,并在每行的末尾添加" y y"(不带引号)。

我正在尝试实现以下功能(在AIX上):

$ for i in `cat WIDeletion2.txt`
> do
> echo deletewob $i y y >> WIDeletion3.txt
> done
ksh: no space

我收到ksh: no space错误。我也验证了/tmp的空间。有大约600mb的可用空间,WIDeletion2.txt的大小如下。

$ ls -ltr WI*
-rw-rw-r--    1 fnsw     fnusr       3390146 Apr 10 10:50 WIDeletion2.txt
装载df

/tmp是:

$ df -m /tmp
Filesystem    MB blocks      Free %Used    Iused %Iused Mounted on
/dev/hd3        1024.00    615.37   40%     1601     2% /tmp

因此,通过将这些额外的东西添加到文件中,它可以达到其大小的两倍或三倍,最大为20 mb,并且我有600 MB的可用空间。我甚至尝试将它放在脚本中然后运行产生相同错误的脚本。我有什么想法得到这个错误?

2 个答案:

答案 0 :(得分:2)

为所有人打开了

/ tmp文件夹。

使用sed

sed 's/.*/deletedwob& y y/' WIDeletion2.txt > WIDeletion3.txt

deletedwob5A1E7DF7C1C8BC4497FE3AD68954EF21 VA_ITSHOME y y
deletedwob294A07B8ABDC454FABD0CD488B3FA51B VA_ITSHOME y y
deletedwobC15A689952E4A14993B4787020258AEA VA_ITSHOME y y
deletedwobC3E8CFE6FFBD3A45B37336D270940AC8 VA_ITSHOME y y
deletedwobF69955919630784EB41FE8D0BE2A260F VA_ITSHOME y y
deletedwobDD044FFD70FDED46AEA9205DA3435B24 VA_ITSHOME y y
deletedwob0C678B5BC6531140BE92F40A0B727012 VA_ITSHOME y y

使用awk

awk '{printf "deletedwob%s y y\n",$0}' file

使用shell

while read -r line; do echo "deletedwob${line} y y"; done < file

答案 1 :(得分:1)

你的shell正在耗尽处理该循环的内存。 尝试:

sed -e 's,^,deletedwob ,' -e 's,$, y y,' WIDeletion2.txt > WIDeletion3.txt