次の構造を持つファイルfile.txt
があります:-
./a/b/c/sdsd.c
./sdf/sdf/wer/saf/poi.c
./asd/wer/asdf/kljl.c
./wer/asdfo/wer/asf/asdf/hj.c
パスから c ファイル名のみを取得するにはどうすればよいですか。つまり、私の出力は
sdsd.c
poi.c
kljl.c
hj.c
これは、awk を使用して簡単に実行できます。
set field seperator FS="/" と $NF は、すべてのレコードの最後のフィールドを出力します。
awk 'BEGIN{FS="/"} {print $NF}' file.txt
また
awk -F/ '{print $NF}' file.txt
または、次のように cut と unix コマンド rev で行うことができます
rev file.txt | cut -d '/' -f1 | rev
basename
次のコマンドを使用できます。
basename /a/b/c/sdsd.c
sdsd.c を提供します
のファイルのリストについてはfile.txt
、次のようにします。
while IFS= read -r line; do basename "$line"; done < file.txt
使用sed
:
$ sed 's|.*/||g' file
sdsd.c
poi.c
kljl.c
hj.c
Perl ソリューション:
perl -F/ -ane 'print $F[@F-1]' your_file
また、sedを使用できます:
sed 's/.*[/]//g' your_file