端末に特定の列を貼り付ける方法

端末に特定の列を貼り付ける方法

端末内部にデータの3番目の列だけを貼り付けたいです。

私はもともと次のものを持っていました:

4 SF0086 SF0086
12 SF0087 SF0087
17 TSF141 TSF141
29 TSF070 TSF070
30 TSF028 TSF028   
31 TSF122 TSF122

これをコピーして端末に貼り付けると1行になります

4 SF0086 SF0086 12 SF0087 SF0087 17 TSF141 TSF141 29 TSF070 TSF070 30 TSF028 TSF028 31 TSF122 TSF122

私はそれを次のように取得したいと思います:

SF0086
SF0087
TSF141
TSF070
TSF028
TSF122

オプションの1行(中間)をファイルに保存し、次のオプションを使用するか、汎用POSIXシステムで使用できるオプションを使用できますが、awkまだsed把握perlしていません。私もこのコマンドを実行できず、私にはこのコマンドを実行できないというpaste結論に達しました。paste3番目の列を抽出する必要があるたびにデータが変更されます(間隔が変更されることを意味します)。データ抽出器/フォーマットエキスパートはありますか?

答え1

'cut'はあなたが探しているコマンドです。使用する区切り文字(デフォルトは空白だと思います)と希望の列を指定します。マニュアルページにはすべての詳細が一覧表示されます。

この機能を正しく機能させるには、貼り付けるときに改行が破損していないことを確認する必要があります。

答え2

cut私にとって最も効果的なのは、常に重複があったため、番号付け(-fフィールド)が常に変更され、私のリストが何百ものフィールドになる可能性があるということでしたが、これは効率的な選択ではないことがわかりました。

これが私が望む結果です:

sed -e 's/\s\+/\n/g' data.txt > data_cr.txt && sort data_cr.txt | uniq -d > final.txt

どこ:

sed -e 's/\s\+/\n/g' data.txt > data_cr.txt

すべてのテキスト(スペースで区切り)を別々の行に強制的に作成し、新しいファイルdata_cr.txtに書き込みます...

sort data_cr.txt | uniq -d > final.txt

行ごとにデータをインポートし、重複したコピーを1枚だけ印刷します。

関連情報