0

ファイルが次の構造を持つシナリオがあります。

This is the list of all the employees and their desk numbers
Please dont exchange the chairs or drawers
Handle the furniture around with care
Name    Desk No
----    -------
Joe     445
May     560
Sue     669

デスク番号だけを取得する必要があります。----フィルタとして使用して、後のテキストの後に2番目の列を印刷することを考えています。より良い解決策はありますか?

4

4 に答える 4

4

別のアプローチ:

$ awk 'p{print $2}$1=="----"{p=1}' file
445
560
669

これは、変数pを印刷フラグとして使用します(デフォルトでは値はゼロです)。ブロックは、ゼロ以外の値print $2に設定した場合にのみ実行されます。最初のフィールドがである行を確認してからp設定します。 p----

于 2013-03-07T12:39:05.607 に答える
2

ファイルに常に同じヘッダー(少なくとも同じ行数)がある場合は、特定の行から印刷を開始できます。

awk 'NR>=6 {print $2}' file_name

6行目から最後まで印刷します。次に、2番目のレコードだけを印刷します。

于 2013-03-07T12:35:37.963 に答える
1

sedの実装は次のとおりです。

sed -n '/^----/,${/----/!s/[^ ]* *//p}' file.txt

説明:----で始まる最初の行からファイルの終わりまで、最初のフィールドを削除し、その行の他のすべてを印刷します。

于 2013-03-07T12:41:26.707 に答える
0

簡単なのはgrepどうですか?

$ grep -o "[0-9]\+" input
445
560
669
于 2013-03-07T12:49:11.960 に答える