1

各行に長い文字列があります

1000 AS34_59329 RICwdsRSYHSD11-2-IPAAPEK-93 /ifshk5/BC_IP/PROJECT/T11073/T11073_RICekkR/Fq/AS34_59329/111220_I631_FCC0E5EACXX_L4_RICwdsRSYHSD11-2-IPAAPEK-93_1.fq.gz /ifshk5/BC_IP/PROJECT/T11073/T11073_RICekkR/Fq/AS34_59329/ 111220_I631_FCC0E5EACXX_L4_RICwdsRSYHSD11-2-IPAAPEK-93_2.fq.gz /ifshk5/BC_IP/PROJECT/T11073/T11073_RICekkR/Fq/AS34_59329/clean_111220_I631_FCC0E5EACXX_L4_RICwdsRSYHSD11-2-IPAAPEK-93_1.fq.gz.total.info 11.824 0.981393 43.8283 95.7401 OK

この行には、3 つのファイルの場所 (太字) が含まれています。これらのファイルを /sample などの別の場所に scp する必要があります。

シェルを使用して各行のファイルを scp するにはどうすればよいですか?

 while read myline  
  do  
    echo "LINE:"$myline 
    scp .......

  done < datafile.list 
4

4 に答える 4

1

使用grep

# grep each file name
$ grep -o "/[^ ]*" datafile.list
/ifshk5/BC_IP/PROJECT/T11073/T11073_RICekkR/Fq/AS34_59329/111220_I631_FCC0E5EACXX_L4_RICwdsRSYHSD11-2-IPAAPEK-93_1.fq.gz
/ifshk5/BC_IP/PROJECT/T11073/T11073_RICekkR/Fq/AS34_59329/111220_I631_FCC0E5EACXX_L4_RICwdsRSYHSD11-2-IPAAPEK-93_2.fq.gz
/ifshk5/BC_IP/PROJECT/T11073/T11073_RICekkR/Fq/AS34_59329/clean_111220_I631_FCC0E5EACXX_L4_RICwdsRSYHSD11-2-IPAAPEK-93_1.fq.gz.total.info

# Pipe files to scp 
$ grep -o "/[^ ]*" datafile.list | xargs -i% scp % host:/sample
于 2013-02-01T08:37:06.867 に答える
1

これらが列 4、5、および 6 の場合は、次のことができます。

while read _ _ _ file1 file2 file3 _ 
do  
    scp "$file1" "$file2" "$file3" "user@host:path"
done < datafile.list 
于 2013-02-01T08:15:10.987 に答える
0

あなたの目標がファイル名をキャッチすることであり、レコード内の単語数が可変であり、ファイル名がスペースを理解しないことである場合(例のように)、これを試すことができます:

while read -rd ' ' word || [ "$word" ] ; do
    if [ "$word" != "${word#\/}" ] ; then
        echo '$word is the name of a file'
    fi
done < datafile.list
于 2013-02-01T09:18:47.263 に答える
0

文字列の一部がファイルであるかどうかを確認し-f、その後scp.

#!/bin/bash
str="1000 AS34_59329 RICwdsRSYHSD11-2-IPAAPEK-93 /ifshk5/BC_IP/PROJECT/T11073/T11073_RICekkR/Fq/AS34_59329/111220_I631_FCC0E5EACXX_L4_RICwdsRSYHSD11-2-IPAAPEK-93_1.fq.gz /ifshk5/BC_IP/PROJECT/T11073/T11073_RICekkR/Fq/AS34_59329/111220_I631_FCC0E5EACXX_L4_RICwdsRSYHSD11-2-IPAAPEK-93_2.fq.gz /ifshk5/BC_IP/PROJECT/T11073/T11073_RICekkR/Fq/AS34_59329/clean_111220_I631_FCC0E5EACXX_L4_RICwdsRSYHSD11-2-IPAAPEK-93_1.fq.gz.total.info 11.824 0.981393 43.8283 95.7401 OK"

for i in $str
do
  if [ -f $i ]; then
    echo $i
    # scp here
  fi
done
于 2013-02-01T08:26:56.513 に答える