文字列を修正して文字を削除する

文字列を修正して文字を削除する

バーコードが18列にあるテキストファイルがあります。長い文字列の例を得るために、TCGAバーコードから最後の16文字を削除したいか、列18の文字列の最初の12文字を新しい列に印刷したいと思います。ファイルの行ごとに文字が異なるため、sedコマンドを使用して特定の文字の後に続く文字を削除することはできません。

例:TCGA-2E-A9G8-01A-11D-A403-09はTCGA-2E-A9G8に短縮し、短縮されたIDを新しい列に印刷する必要があります。

次のような回答を見たことがあります。

ベストアンサー1

使用awk:

awk '{print substr($18,1,12)}' input

これにより、18列の文字1〜12が印刷されます。これは、テキストファイルがスペースで区切られていると仮定します。しかし、おそらくそうではありません。

CSVの場合:

awk -F, '{print substr($18,1,12)}' input

この出力を新しい列に追加するSteeldriverのコメントによると:

awk '{$(NF+1) = substr($18,1,12)} 1' input > output

残念ながら、これは新しいファイルを生成します。 gawkファイルを変更することは可能ですが、最善の方法は新しいファイルを作成してから古いファイルを削除することです。

おすすめ記事