このファイルの各行からCSVファイル名を抽出する方法

このファイルの各行からCSVファイル名を抽出する方法

次の行を含むファイルがあります。

-rw-rw-rw 1 root root 6379 May 24 2016 test1.CSV 
-rw-rw-rw 1 root root 23249 May 25 2016 test2.CSV 
-rw-rw-rw 1 root root 2995 May 26 2016 test3.CSV 

CSVファイル名のみを保持してください。正規表現を使用する必要がありますが、どちらが正しいかわかりません。

予想される結果は、「test1.CSV \n test2.CSV \n test3.CSV」です。

答え1

あなたはそれを使用することができますgrep

grep -io '[^ ]*\.csv' filename

-i、--ignore-case大文字と小文字の違いを無視して、大文字と小文字のみが異なる文字のみを一致させます。

-o、--only-matching一致する行のうち、一致する(空でない)部分のみを印刷します。各部分は別々の出力行に表示されます。

[^ ]*\.csv.csv の末尾のスペースを除くすべての文字と一致します。

ファイル名にスペースがないとします。

またはあなたは使用することができますawk

awk '{print $(NF)}' filename | grep -i '\.csv'

変数は$(NF)各行の最後のフィールドです。

答え2

この試み:[^ ]* *$

または関連がある場合は、簡単に言うとgawk '{print $NF}'

答え3

この試み、

awk '$NF~/CSV$/ {print $NF}'  file
  • CSV で終わる行を抽出し、最後のフィールドを印刷します。

答え4

「awk」を使用できます。

awk '{print $9}' files

ファイル名がその行の9番目のフィールドの場合は機能します。

関連情報