循环浏览制表符分隔的文件

时间:2018-11-24 11:07:58

标签: bash shell unix

我有一个要求,我必须有一个“制表符分隔的文件”,该文件必须具有三列。我在此处复制的六行示例

$(document).ready(function() {
  //connect to the socket server.
  var socket = io.connect('http://' + document.domain + ':' + location.port + '/test');
  var numbers_received = [];


  //receive details from server
  socket.on('newnumber', function(msg) {
    console.log("Received" + msg.number);
    //maintain a list of ten numbers
    if (numbers_received.length >= 1) {
      numbers_received.shift()
    }

    numbers_received.push(msg.number);
    numbers_string = '';
    for (var i = 0; i < numbers_received.length; i++) {
      numbers_string = numbers_string + '<p>' + numbers_received[i].toString() + '</p>';
    }
    $('#log').html(numbers_string);
  });


  Plotly.plot('chart',[{
      y:[numbers_received],
      type:'line'
  }]);

  var cnt = 0;
  setInterval(function(){
      Plotly.extendTraces('chart',{ y:[[numbers_received]]}, [0]);
      cnt++;
      if(cnt > 500) {
          Plotly.relayout('chart',{
              xaxis: {
                  range: [cnt-500,cnt]
              }
          });
      }
  },15);


});

每个sample_id具有对应的3个file_ids

我的要求是遍历所有sample_id,并找到所有三个file_ids

对于每个sample_id

cd file_id file_name sample_id 30a6e42d 2f601196 TARGET-20-PABLDZ-04A 25fe4062 3ea58509 TARGET-20-PABLDZ-04A 839d38ec 5c971b6e TARGET-20-PABLDZ-04A 79f40af8 4a2ace7c TARGET-20-PADYIR-09A afb79159 fea2f740 TARGET-20-PADYIR-09A 177500c8 1eae7be6 TARGET-20-PADYIR-09A (文件夹的名称与file_id相同)。 <file_id>文件夹与制表符分隔文件所在的位置相同。 获取文件名(该文件位于<file_id>文件夹中)

cp file_name到一个目录

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

您可以尝试

while IFS=$'\t' read -r column1 column2 column3 ; do
  printf "%b\n" "column1<${column1}>"
  printf "%b\n" "column2<${column2}>"
  printf "%b\n" "column3<${column3}>"
done < "myfile"

IFS = $'\ t'告诉bash制表符是定界符

答案 1 :(得分:0)

只需使用awk的system函数:注意,这将创建目录并尝试移动文件。警告读者:执行该命令之前,请先了解该命令的作用。也许在各个位置插入“ echo”以查看预期的行为。

awk 'NR>1{cmd=sprintf("mkdir -p %s; mv %s/%s %s", $3, $1, $2, $3 ); system (cmd) }' input-file

这假设您要将文件移动到第3列中命名的目录(您未指定目标目录的名称,所以我在猜测),并在尝试移动文件之前创建文件