我有一个文本文件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的可用空间。我甚至尝试将它放在脚本中然后运行产生相同错误的脚本。我有什么想法得到这个错误?
答案 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