24

タブ区切りファイルから7番目の列を選択する必要があります。例えば:

cat filename | awk '{print $7}'

問題は、4番目の列のデータに複数の値があり、その間に空白があることです。例-以下の出力の最後の行:

user  \Adminis FL_vol Design         0         -       1       -
group        0 FL_vol Design   19324481         -    3014       -
user      \MAK FL_vol Design   16875161         -    2618       -
tree       826 FL_vol Out Global Doc Mark     16875162         -    9618       - /vol/FL_vol/Out Global Doc Mark
4

4 に答える 4

26

データが明確にタブで区切られている場合、cutスペースではなくタブで切り取られます。

cut -f7 filename

あなたも確かにそれを行うことができawkます:

awk -F'\t' '{ print $7 }'
于 2012-12-10T05:36:40.153 に答える
6

フィールドがタブで区切られていて、一部のフィールドにスペースが含まれていることが懸念される場合、ここでは問題ありません。

cut -f 7

(カットはデフォルトでタブ区切りのフィールドになります。)

于 2012-12-10T05:38:31.050 に答える
4

-入力ファイルの形式から判断すると、スペースの代わりにon で区切ることができます。

awk 'BEGIN{FS="-"} {print $2}' filename
  • FSは Field Separator の略です。入力の区切り記号と考えてください。
  • で区切り-ますので、7 番目のフィールドが 2 番目のフィールドになります。
  • 猫を救えfilename代わりに、入力ファイルを awk の引数として指定してください。

または、データ フィールドがタブで区切られている場合は、次のように明示的に行うことができます。

awk 'BEGIN{FS="\t"} {print $7}' filename

Out Global Doc Markスペースで区切られているように見えるため、これで問題は解決します。

于 2012-12-10T04:57:35.053 に答える
1

これはあなたのために働くかもしれません(GNU sed):

sed -r 's/(([^\t]*)\t?){7}.*/\2/' file

この置換コマンドは、行内のすべてを選択し、7番目の非タブを返します。sed最後にグループ化されたものは(...)、後方参照を使用して置換の左側に返されます。この場合、最初の後方参照は、非タブ文字とタブ文字の両方を返します(NBが存在する場合は?、先行パターンの1つまたはまったくないメタ文字)。.*どれか。

于 2012-12-10T07:30:15.873 に答える