たぶん簡単なことですが、頭が痛いです。
次のパスを持つファイルのリストがありますstuff.txt
。
c:\users\none\file1.txt
c:\users\none\file2.txt
g:\home\share\make.log
次のようにファイル名を別のファイルに簡単に出力するにはどうすればよいですか?
file1.txt
file2.txt
make.log
よろしくお願いします。
答え1
awk -F'\' '{ print $NF }' stuff.txt
フィールド区切り文字を設定し、\
各行の最後のフィールドを印刷します。
答え2
使用幸せ(以前のPerl_6)
~$ raku -ne 'put IO::Spec::Win32.basename($_);' stuff.txt
#OR
~$ raku -ne 'put IO::Spec::Win32.basename($_.trim-trailing);' stuff.txt
RakuはPerlファミリーのプログラミング言語です。上記のコードはファイルパスを取得し、それをIO
オブジェクトとして扱います。オブジェクトには4つの主要クラス(Unix、Windows、Cygwin、およびQNX)があります。 Windowsパスがあるため、IO::Spec::Win32
このメソッドが呼び出されます(パス区切り文字を正しく理解するため)。最後にbasename
ファイル名を教えてください。行の末尾に使用またはtrim
消去できるスペースがあるようですtrim-trailing
。
入力例:
c:\users\none\file1.txt
c:\users\none\file2.txt
g:\home\share\make.log
出力例:
file1.txt
file2.txt
make.log
https://docs.raku.org/type/IO/Spec/Win32
https://docs.raku.org/routine/basename
https://raku.org