[英]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
您必須將原始文件和目標文件的路徑分別替換為sourceFile
和destFile
。
該命令查找沒有空格或斜杠\\([^[:blank:]\\/]*\\)
任何字符串,其前加斜杠^.*\\/
,后跟空白char [[:blank:]].*$
patter被第一個匹配的字符串/\\1/
取代。
您可以在此處閱讀快速的sed
參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.