小编ste*_*eve的帖子

构建表 - 根据文件名添加列

我有大量具有以下命名风格的文件:

WBM_MIROC_rcp8p5_mississippi.txt
WBM_GFDL_rcp8p5_nosoc_mississippi.txt
DBH_HADGEM_rcp4p5_co2_mississippi.txt
HMH_IPSL_rcp4p5_mississippi.txt
Run Code Online (Sandbox Code Playgroud)

这些文件表示表(其中一些具有制表符分隔符和其他一个空格分隔符),如下所示:

YEAR MONTH DAY RES
1971 1 1 1988
1971 1 2 3829
...
Run Code Online (Sandbox Code Playgroud)

我想将所有rcp8p5名称中的文件分组在一张大表中;并对rcp4p5名称中的文件执行相同操作。但是,我只想粘贴每个文件的 4 列,以避免前三列总是相同的冗余。我目前正在使用以下脚本:

ls |
awk -F_ '{ i=$1; m=$2; s=$3; u=$4;
          if(f[s]=="")add = $0;
          else add = sprintf("<(cut -f4 %s)",$0);
          f[s] = f[s] " " add }
          END{ for(insc in f)
                 printf "paste%s > out_%s.txt\n",f[insc],insc
          }' |bash
Run Code Online (Sandbox Code Playgroud)

不清楚为什么,但输出不符合预期。我有以下输出:

YEAR MONTH DAY RES YEAR MONTH DAY RES YEAR MONTH DAY RES
1971 1     1   187 1971 1 …
Run Code Online (Sandbox Code Playgroud)

awk text-processing paste

5
推荐指数
1
解决办法
173
查看次数

/tmp 下的文件权限被拒绝

我有一个 bash 脚本,它读取文件名、选择数据、构建表,然后添加标题。不幸的是,在添加标题并提供输出文件时,我收到以下错误消息:

./big_table_rcp.sh: line 153: /tmp/out: Permission denied
Run Code Online (Sandbox Code Playgroud)

它与以下行链接:

| cat - out_${scenario}.txt > /tmp/out && mv /tmp/out ${gauge}_${scenario}.txt
Run Code Online (Sandbox Code Playgroud)

有谁知道如何访问输出文件?

bash output

2
推荐指数
2
解决办法
2万
查看次数

将列添加到表

我有几个 ASCII 文件,包含一列数据,如下所示:

DATA
1564
1896
1238
1479
1562
1894
1489
....
Run Code Online (Sandbox Code Playgroud)

我需要实现一个包含日期的列。我知道每个数据集都始于 1900-01-01(年-月-日)。因此,我想按如下方式重新格式化每个文件:

DATE DATA
1900-01-01 1564
1900-01-02 1896
1900-01-03 1238
1900-01-04 1479
1900-01-05 1562
1900-01-06 1894
1900-01-07 1489
.....
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

text-processing

2
推荐指数
1
解决办法
234
查看次数

Adding column to a table by concatenating values from other columns

I have several csv table as follow:

YEAR;MONTH;DAY;RES1;RES2
1971;1;1;1206.1;627
1971;1;2;1303.4;654.3
1971;1;3;1248.9;662
1971;1;4;1188.8;666.8
Run Code Online (Sandbox Code Playgroud)

From this I would like to create a new column that concatenate the values of the columns MONTH and DAY. Therefore the output should look like that:

YEAR;MONTH;DAY;RES1;RES2;MONTHDAY
1971;1;1;1206.1;627;11
1971;1;2;1303.4;654.3;12
1971;1;3;1248.9;662;13
1971;1;4;1188.8;666.8;14
Run Code Online (Sandbox Code Playgroud)

awk table cat

1
推荐指数
1
解决办法
1644
查看次数

标签 统计

awk ×2

text-processing ×2

bash ×1

cat ×1

output ×1

paste ×1

table ×1