次の行を含むファイルがあります。
-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番目のフィールドの場合は機能します。