我有一个文件,每行有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
由于
答案 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