出力ファイルを変更せずにsedを使用してテキストファイルから特定の文字列を削除しますか?

出力ファイルを変更せずにsedを使用してテキストファイルから特定の文字列を削除しますか?

編集:ブロック引用テキストを追加しました。

acc.paired.txt照明サンプル名()を含むタブ区切りのテキストファイル()がありますhead

SRR10598163_R1.fastq.gz  SRR8916417_R2.fastq.gz
SRR10598049_R1.fastq.gz  SRR10598163_R2.fastq.gz  SRR8916418_R1.fastq.gz
SRR10598049_R2.fastq.gz  SRR10598164_R1.fastq.gz  SRR8916418_R2.fastq.gz
SRR10598050_R1.fastq.gz  SRR10598164_R2.fastq.gz  SRR8916419_R1.fastq.gz
SRR10598050_R2.fastq.gz  SRR10598165_R1.fastq.gz  SRR8916419_R2.fastq.gz
SRR10598051_R1.fastq.gz  SRR10598165_R2.fastq.gz  SRR8916420_R1.fastq.gz
SRR10598051_R2.fastq.gz  SRR10598166_R1.fastq.gz  SRR8916420_R2.fastq.gz
SRR10598052_R1.fastq.gz  SRR10598166_R2.fastq.gz  SRR8916421_R1.fastq.gz
SRR10598052_R2.fastq.gz  SRR10598167_R1.fastq.gz  SRR8916421_R2.fastq.gz
SRR10598053_R1.fastq.gz  SRR10598167_R2.fastq.gz  SRR8916422_R1.fastq.gz
SRR10598053_R2.fastq.gz  SRR10598168_R1.fastq.gz  SRR8916422_R2.fastq.gz
SRR10598054_R1.fastq.gz  SRR10598168_R2.fastq.gz  SRR8916423_R1.fastq.gz

私がしたい変更は2つあります。 1)重複したサンプル名を削除し、2)特定のサンプル名の後のすべての文字を削除します。私のターゲット出力はSRR###数値(no _R#.fastq.qz)のみを含み、重複する項目は含まないタブで区切られたテキストファイルです。ターゲット出力の例:

SRR10598163
SRR8916417
SRR10598049
SRR8916418
SRR10598164
SRR10598050
SRR8916419
SRR10598165
SRR10598051
SRR8916420
SRR10598166
SRR10598052
SRR8916421
SRR10598167
SRR10598053
SRR8916422
SRR10598054
SRR10598168
SRR8916423

sed文字削除モードに切り替えます。

`sed 's| _R1.fastq.gz||g' acc.paired.txt > out.txt`

しかし、out.txt変化はありません。

ティア。

ベストアンサー1

使用grepsort:

grep -oE '\bSR[^_]+' file | sort -u

SRR10598049
SRR10598050
SRR10598051
[...]

正規表現の一致は次のとおりです。

説明する
\b 単語文字(\w)と単語以外の文字アンカーの間の境界アンカー
SR 「SR」
[^_]+ 以下を除くすべての文字:_(1回以上(最大の一致)

おすすめ記事