小编Jas*_*onD的帖子

使用 sed/awk 将变量的内容打印到输出文件中的指定行

我一直在编写一个脚本来将多个 csv 文件连接成一个大的 csv。csv 包含文件夹名称及其各自的大小,格式为“大小,项目名称”的 2 列设置

单个 csv 文件示例:

49747851728,ODIN
32872934580,_WORK
9721820722,LIBRARY
4855839655,BASELIGHT
1035732096,ARCHIVE
907756578,USERS
123685100,ENV
3682821,SHOTGUN
1879186,SALT
361558,SOFTWARE
486,VFX
128,DNA
Run Code Online (Sandbox Code Playgroud)

对于我当前的测试,我有 25 个类似的文件,第一列中的数字不同。

我试图让这个脚本执行以下操作:

  • 读取每个 csv 文件
  • 对于它看到的每个项目,如果该项目已经打印到文件中,则扫描输出文件。如果没有,打印项目名称
  • 对于每个文件,对于每个项目,如果找到了项目,则将大小打印到输出 csv。

但是,我需要所有项目都在文本行 1 上,以逗号分隔,因此我可以使用此输出文件作为 javascript 图形的输入。尺寸应添加在其项目名称下方的列中。

我目前的脚本:

csv_folder=$(echo "$1" | sed 's/^[ \t]*//;s/\/[ \t]*$//')
csv_allfiles="$csv_folder/*.csv"
csv_outputfile=$csv_folder.csv
echo -n "" > $csv_outputfile

for csv_inputfile in $csv_allfiles; do
  while read line && [[ $line != "" ]]; do
    projectname=$(echo $line | sed 's/^\([^,]*\),//')
    projectfound1=$(cat $csv_outputfile | grep -w $projectname)
if [[ …
Run Code Online (Sandbox Code Playgroud)

csv bash awk sed

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

标签 统计

awk ×1

bash ×1

csv ×1

sed ×1