7番目の列には次のような値があります:
OS:J:\output\Windows\System32\winevt\Logs\Security.evtx
OS:J:\output\Windows\System32\winevt\Logs\System.evtx
値を逆順に読み取って情報を抽出し、新しい列に入れたい。
新しい列に抽出される値、たとえば「location」は次のようになります。
Location
Security.evtx
System.evtx
答え1
$ awk -F'\' '{print $7}' inputfile
答え2
チェックされている通り、最後の列は$7です。以下のコマンドを使用して値を抽出します。
指示
sed -r 's/.*\\//g' filename
出力
Security.evtx
System.evtx
答え3
質問のデータを含む7番目のフィールドの前に、表示されていないフィールドが少なくとも6つあると仮定すると、次のようなツールを使用してCSVファイルを読み取ることができます。ミラー( )をクリックして、新しい値用のmlr
新しいフィールドを作成します。location
さらに、CSV ファイルにヘッダーがあり (新しいフィールドを作成するためlocation
)、7 番目のフィールドのヘッダーが であると仮定するfilepath
と、次の操作を実行できます。
mlr --csv put '$location = sub($filepath,".*\\","")' file
このsub()
関数は、フィールド内の最後のバックスラッシュより前のすべてのテキストを削除しますfilepath
。その操作の結果は、新しいlocation
フィールドに割り当てられます。
テスト:
$ cat file
A,B,C,D,E,F,filepath
1,2,3,4,5,6,OS:J:\output\Windows\System32\winevt\Logs\Security.evtx
1,2,3,4,5,6,OS:J:\output\Windows\System32\winevt\Logs\System.evtx
$ mlr --csv put '$location = sub($filepath,".*\\","")' file
A,B,C,D,E,F,filepath,location
1,2,3,4,5,6,OS:J:\output\Windows\System32\winevt\Logs\Security.evtx,Security.evtx
1,2,3,4,5,6,OS:J:\output\Windows\System32\winevt\Logs\System.evtx,System.evtx
$ mlr --c2p --barred put '$location = sub($filepath,".*\\","")' file
+---+---+---+---+---+---+---------------------------------------------------------+---------------+
| A | B | C | D | E | F | filepath | location |
+---+---+---+---+---+---+---------------------------------------------------------+---------------+
| 1 | 2 | 3 | 4 | 5 | 6 | OS:J:\output\Windows\System32\winevt\Logs\Security.evtx | Security.evtx |
| 1 | 2 | 3 | 4 | 5 | 6 | OS:J:\output\Windows\System32\winevt\Logs\System.evtx | System.evtx |
+---+---+---+---+---+---+---------------------------------------------------------+---------------+
変更をその場で行いたい場合は、コマンド ラインの-I
前にオプションを追加します。--csv
答え4
awk -F ' / ' '{print $7} yourfilename