请帮助编写以下场景的unix脚本

时间:2011-04-28 14:46:46

标签: linux shell unix ksh

unload.dat个文件,其中包含.ksh个文件名列表。任务是从unload.dat文件中存在的每个文件中提取一些参数详细信息。每个文件都包含以下信息。

让我们考虑file_name1.ksh中的第一个文件名(unload.dat):

graph_name = abcd.ksh

export name_a=value_a
export "name_b=value_b"
export name_c=value_c
export name_d=value_d
export name_e="value_e"
export name_f="value_f"

下一个文件的提取数据应该附加到同一输出文件中的前一个文件的输出中。

输出应如下所示:

abcd.ksh    name_a  value_a 1   filename_1.ksh
abcd.ksh    name_b  value_b 1   filename_1.ksh
abcd.ksh    name_c  value_c 1   filename_1.ksh
abcd.ksh    name_d  value_d 1   filename_1.ksh
abcd.ksh    name_e  value_e 1   filename_1.ksh


abcd.ksh    name_a  value_a 2   filename_2.ksh
abcd.ksh    name_b  value_b 2   filename_2.ksh
abcd.ksh    name_c  value_c 2   filename_2.ksh
abcd.ksh    name_d  value_d 2   filename_2.ksh
abcd.ksh    name_e  value_e 2   filename_2.ksh

2 个答案:

答案 0 :(得分:0)

#!/bin/sh

counter=1
while read -r filename; do
  if [ "$counter" -ne 1 ]; then
    echo
    echo
  fi

  IFS== read _ graph < "$filename"
  graph=${graph# }

  sed -n '/^export/{s/^[^ ]* //;s/"//g;p}' < "$filename" \
  | while IFS== read -r name value; do
    echo "$graph    $name  $value $counter   $filename"
  done

  counter=$((counter+1))
done < unload.dat

答案 1 :(得分:-1)

#!/bin/bash
var1=`cat unisc.txt | sed -n '1,1p' | cut -f3 -d' '`
var2=`cat unisc.txt | wc -l`
va1=1
var=`expr $var2 - 1`
echo $var
for ((i=1;i<=2;i++))
do
   for ((j=1;j<=$var;j++))
   do
      var3=`sed 's/"//g' unisc.txt | cut -f2 -d' ' | cut -f1 -d'=' | sed -n '2,'$var2'p' | sed -n $j'p'`
      var4=`sed 's/"//g' unisc.txt | cut -f2 -d' ' | cut -f2 -d'=' | sed -n '2,'$var2'p' | sed -n $j'p'`
      echo "$var1 $var3 $var4 $i filename_1.ksh"
    done
done