如何迭代日期和数据并生成新文件

时间:2010-04-14 15:09:42

标签: bash scripting

我有一个文件,每行有n个数字。该行的第一列是日期:比如12/31/2009。但是,某些日期可能会丢失。我想创建与date相对应的文件,其中包含后面的数字。例如:

主文件将包含以下数据:

  12/28/2009   5 6 7  
  12/31/2009   6 7  7

生成的文件应该被命名并具有以下数据,注意格式:

file1.20081228

  item     data 
 -------   ------    
  1          5
  2          6   
  3          7 

file1.20081231

  item     data 
 -------   ------  
   1         6 
   2         7   
   3         7

由于

2 个答案:

答案 0 :(得分:1)

awk '
{
  m=split($1,a,"/")
  c=0
  newfile="file."++f"."a[3]a[1]a[2]
  print "item\tdata"  > newfile
  print "----------" > newfile
  for(i=2;i<=NF;i++){
    print "item\t"++c"\t"$i >newfile
  }
}' file

答案 1 :(得分:0)

如果由于某种原因关心它是一个bash脚本(而不是awk,就像ghostdog的答案,这很棒):

#!/bin/bash

# use the first argument, or hardcode
# INPUT_FILE=$1
# INPUT_FILE=input_file

while read line; do
    fields=($line)
    output="file1.$(date --date=${fields[0]} +%Y%m%d)"
    echo "$output:"
    echo " item      data" #> $output
    echo "-----    ------" #> $output
    i=1
    for field in "${fields[@]:1}"; do
        printf "%5d     %5d\n" $i $field #> $output
        i=$((i+1))
    done
done < $INPUT_FILE