すべての列ヘッダーがパス名であるファイルがあります。各列ヘッダーを短くしたいと思います。~から次のようなもの:
/mydir/cat/dog/hen/test/block/sample1.so.rg.mk.bam /mydir/cat/dog/hen/test/block/sample2.so.rg.mk.bam
到着する:
sample1 sample2
Linuxでこれを行うにはどうすればよいですか?私のファイルには46〜100を超える列があるため、列名を手動で編集することはできません。私が望むファイル名の長さは、上記のようにそれぞれ7文字です。
ありがとう
ヘッダーにはファイル名が含まれます。各列ヘッダー/名前は次のとおりです。
/mydir/cat/dog/hen/test/block/sample1.so.rg.mk.bam
私はその場にいたらいいのに
sample1
明確にするために、これは46列のテキストファイルです。各列ヘッダーまたは名前は、上記の長い文字列で表されます。各ヘッダーを7文字のバージョンに切りたいと思います。「サンプル1」…「サンプル46」
必須サンプルファイル(各列ヘッダーの下にデータを含む)
sample1 sample2 sample3 sample4 sample5 ...
ベストアンサー1
元のファイルを短い名前の新しいファイルにコピーする短いプログラムを作成します。元のファイルをアーカイブすると、問題が発生した場合にバックアップが可能になります。作成する内容は、おなじみの言語によって異なります。これはBashのようなシェルでも、Java、C、Pearl、Pythonなどのすべての言語でもかまいません。
以下はいくつかの疑似コードです。 old は元のファイル、new は新しいファイルです。新規
begin a loop to read each line in old
read line from old
delete all characters from line up to and including the last "/"
delete delete all characters from line after the first 7
//This is what you want to save unless it conflicts with a previously saved line
determine if you have a conflict.
if there is a conflict
add a number to the end of line to make it unique
save line to new
end of loop