バーコードが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
ファイルを変更することは可能ですが、最善の方法は新しいファイルを作成してから古いファイルを削除することです。