実はcut
は適切なツール、現在のコンテキストあなたの仕事を処理するための最良の方法ですが、それでも場合あなたはこのような何かを試すことが、awk
が必要です
$ cat ext_f.awk
function ext_field(s,e, r,i)
{ if(e > s)
{
for(i=s; i<=e; i++)r = i > s ? r OFS $i : $i;
}else{
if(s!="")return $s
}
return r
}
{ print ext_field(2,3), ext_field(6,9) }
実行:
入力:
$ cat file
1.006 2.0101 1.002 3.005 0.0000 4.09873 9.0009 1000.678 15.0 0.9999 11.8
78.003 9.411 0.000 0.003 20000.0100 1.03 9.00029 100.0 0.5 123.9 1.800
出力:
$ awk -f ext_f.awk file
2.0101 1.002 4.09873 9.0009 1000.678 15.0
9.411 0.000 1.03 9.00029 100.0 0.5
あなたはカンマまたは出力セパレータとして他のいくつかの文字が必要な場合は、その後、あなたは
以下のような
-v OFS=
を変更することができると仮定
$ awk -v OFS="," -f ext_f.awk file
2.0101,1.002,4.09873,9.0009,1000.678,15.0
9.411,0.000,1.03,9.00029,100.0,0.5
あなたはgawk
を持っている場合は、単に例ext_f.awk
から、ラインの下に、削除、および--source
オプション
{ print ext_field(2,3), ext_field(6,9) }
を使用します。
$ awk -v OFS="," -f ext_f.awk --source '{print ext_field(1,2)}' file
1.006,2.0101
78.003,9.411
@EdモートンOおやっ、あなたが正しいです。私はこれを解決します。 – badner