データセットがあり、Linuxを使用して特定の列を抽出する必要があります。
次の列があります
1,2,3,4,5,6,7,8,9,10
1列を維持して2列を選択し、3,4,5をスキップし、6列を選択し、7,8,9をスキップして10列を選択するように続けて3列をスキップしたいので毎回リストをスキップしたいです。
これはデータの一部です
Composite Element REF Beta_value Gene_Symbol Chromosome Genomic_Coordinate Beta_value Gene_Symbol Chromosome Genomic_Coordinate
cg00000029 0.188204193 RBL2 16 53468112 0.166988369 RBL2 16 53468112
cg00000108 NA C3orf35 3 37459206 NA C3orf35 3 37459206
cg00000109 NA FNDC3B 3 171916037 NA FNDC3B 3 171916037
cg00000165 0.111512805 NA 1 91194674 0.542004657 NA 1 91194674
cg00000236 0.938647003 VDAC3 8 42263294 0.935845645 VDAC3 8 42263294
cg00000289 0.633428798 ACTN1 14 69341139 0.733281344 ACTN1 14 69341139
cg00000292 0.65556936 ATP2A1 16 28890100 0.358096457 ATP2A1 16 28890100
cg00000321 0.191278127 SFRP1 8 41167802 0.509407035 SFRP1 8 41167802
cg00000363 0.135746609 NA 1 230560793 0.120685168 NA 1 230560793
cg00000622 0.017719646 NIPA2 15 23034447 0.018611505 NIPA2 15 23034447
cg00000658 0.891647766 MAN1B1 9 139997924 0.904048927 MAN1B1 9 139997924
cg00000714 0.061226142 TSEN34 19 54695678 0.071011447 TSEN34 19 54695678
cg00000721 0.950283919 LRRC16A 6 25282779 0.952309685 LRRC16A 6 25282779
cg00000734 0.058200906 CNBP 3 128902377 0.05981105 CNBP 3 128902377
cg00000769 0.025102512 DDX55 12 124086477 0.028169739 DDX55 12 124086477
最初の列「Composite Element REF」を維持してからBeta_Valueのみを選択する必要があるため、列2、次の列6など合計1373列になります。
ありがとう
答え1
あなたの質問にいくつかの詳細がありません。私の考えでは、テキストファイルやパイプで見つかったと思います。
フィルタ列を使用する迅速で汚い方法は次のとおりです。awk
あなたの質問は非常に基本的なので、次に焦点を当てます。
$ echo "1,2,3,4,5,6,7,8,9,10" |awk -F, '{print $1 "," $2 "," $6 "," $10;}'
1,2,6,10
カンマはフィールド区切り記号として宣言する必要があります-F,
。 1列と2列のフル入力になります
$0
。
$1
$2
入力データが例と異なる場合は、より具体的に説明してください。
答え2
awkベースのソリューションの場合:
awk -v FS=, -v OFS=, '{ printf $1; for(i=2;i<=NF;i+=4) { printf OFS $i }; print "";}' marwah.input
答え3
[現在のスペースで区切られたサンプルデータに基づいています。]
配列スライシングを使用し、perl
いくつかのモジュラー演算を使用してインデックスを選択できますgrep
。
perl -anle 'print join "\t", $F[0], @F[grep { !($_ % 4 - 1) } 1..$#F]' file
答え4
sed -E 's/(,[^,]*)(,[^,]*){3}/\1/g' yourfile.txt
列1、2、6、10、14、18などは保持されます。これがあなたが期待していたことを願っています。