簡體   English   中英

Shell腳本從日志消息行中提取文件名

[英]Shell script to extract a filename from log message lines

我有列出一些行的txt文件。 每行都包含圖像名稱。 我想要的是,編輯相同txt文件或將特定圖像名稱復制到新文件的shell腳本。

這是我的txt文件,其中包含圖像列表及其路徑。 在此處輸入圖片說明

我想要這樣的輸出:

在此處輸入圖片說明

我只希望從這些行中提取圖像名稱。

使用gnu sed您可以執行以下操作:

sed -r 's~^[^[:blank:]]*/([^/ ]+) .*$~\1~' file
1.png
1@2x.png
2.png
2@2x.png
3.png

您可以使用此awk

awk '{ split($1,arr,"/"); print arr[length(arr)] }' yourfile > output.txt

您可以執行以下操作:

cat the_file.txt|while read file; do
    echo $(basename $file)
done

然后(如果需要)將輸出重定向到另一個文件。

while read fn rest
do
    basename "$fn"
done < file.txt

這將逐行讀取您的輸入。 它將把文件名(包括路徑)放入fn變量中,並將該行rest部分中的所有內容放入rest 然后,它使用basename命令刪除路徑,僅打印出文件名本身。

這是另一個不使用擴展正則表達式的sed解決方案(更具可移植性的解決方案):

sed 's/^.*\/\([^[:blank:]\/]*\)[[:blank:]].*$/\1/' sourceFile > destFile

您必須將原始文件和目標文件的路徑分別替換為sourceFiledestFile

該命令查找沒有空格或斜杠\\([^[:blank:]\\/]*\\)任何字符串,其前加斜杠^.*\\/ ,后跟空白char [[:blank:]].*$ patter被第一個匹配的字符串/\\1/取代。

您可以在此處閱讀快速的sed參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM