簡體   English   中英

如何使用awk打印路徑文件名的尾部

[英]how to print tail of path filename using awk

我搜索它沒有成功。

我有一個帶有pathes的文件。 我想要打印所有路徑的尾部。 例如(對於文件中的每一行):

/homes/work/abc.txt
--> abc.txt

有誰知道怎么做?

謝謝

awk -F "/" '{print $NF}' input.txt

將給出的輸出:

abc1.txt
abc2.txt
abc3.txt

對於:

$>cat input.txt
text path/to/file/abc1.txt
path/to/file/abc2.txt
path/to/file/abc3.txt

這個awk怎么樣?

echo "/homes/work/abc.txt" | awk '{sub(/.*\//,x)}1'
abc.txt

由於.*是貪婪的,它會一直持續到最后/
所以在這里我們刪除所有直到最后/x ,因為x是空的,什么都不給。


Thors版本

echo "/homes/work/abc.txt" | awk -F/ '$0=$NF'
abc.txt

注意這對於/homes/work/00,0等都會失敗,所以更好用:

echo "/homes/work/abc.txt" | awk -F/ '{$0=$NF}1'

awk解決方案已由@Jotne@bashophil提供

這里有一些其他的變化(只是為了好玩)


使用sed

sed 's:.*/::' file

使用grep

grep -oP '(.*/)?\K.*' file

使用cut - 由@Thor添加

rev file | cut -d/ -f1 | rev

使用basename - 由@fedorqui@EdMorton建議

while IFS= read -r line; do 
  basename "$line" 
done < file

暫無
暫無

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

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