使用sed为korn shell中的变量内容添加前缀

问题描述 投票:-1回答:2

我试图远离所有运行时临时文件。我能够用运行时变量替换所有这些变量,但是当我使用带变量的命令时,一个命令让我很难。

rimco内容:包含文件位置

   /home/bim 
   /home/ram 
   /home/gps 
   /home/hdr 
   /home/pal 

bim内容:包含一组数字

28800,1536,14400,768
11100,12312,902,321
3044,1536,1290,334
3044,1536,1290,334
11100,12312,902,321
28800,1536,14400,768

目标是在找到我正在寻找的数字时为变量$output添加前缀。该行存储在$output中,前缀为$dte

dte="available" 
for f in $(cat rimco)
  do 
   out=`grep 768 $f`
     output+=`echo -e "\n$out"| sed "s/^/$dte,/"`
 done

好吧,结果是没有吸引力,dte内容,到处都是

available,
available,28800,1536,14400,768
available,28800,1536,14400,768available,
available,28800,1536,14400,768
available,28800,1536,14400,768available,
available,28800,1536,14400,768
available,28800,1536,14400,768available,
available,28800,1536,14400,768
available,28800,1536,14400,768available,
available,28800,1536,14400,768
available,28800,1536,14400,768

目标是得到这个

available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768

知道怎么解决这个问题吗?

谢谢

variables awk sed ksh
2个回答
0
投票

这是我对许多文件的回答。使用额外的变量结果连接和grep来摆脱空行:

dte="available"
result="" 
for f in $(cat rimco)
  do 
     out=`grep 768 $f`
     output=`echo -e "$out" | sed "s/^/$dte,/"`
     result="$result\n$output"
 done

echo -e "$result" | grep -v "^$"

返回:

available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768

0
投票

如果你将grep更改为一个衬里它可以工作(删除for循环):

dte="available"
files=$(cat rimco)
out=`grep 768 $files`
output=`echo -e "$out" | sed "s/^.*:/$dte,/"`
echo -e "$output"

sed现在用$ dte字符串替换文件名(grep的结果)加冒号:

© www.soinside.com 2019 - 2024. All rights reserved.