2

ファイル名を抽出する必要がある大きなログファイルがあります。

ファイルは次のようになります。

/path/to/loremIpsumDolor.sit /more/text/here/notAlways/theSame/here
/path/to/anotherFile.ext /more/text/here/differentText/here
.... about 10 million times

次のようなファイル名を抽出する必要があります。

loremIpsumDolor.sit
anotherFile.ext

私の最初の戦略は、すべて/path/to/を''で検索/置換することだと思います。しかし、スペースの後のすべての文字を削除する方法が行き詰まっています。

手伝ってくれますか?

4

4 に答える 4

5
sed 's/ .*//' file

もうかかりません。もちろん、変換された出力は標準出力に表示されます。

于 2012-11-15T19:42:55.917 に答える
2

に渡すcut

cut '-d ' -f1 yourfile
于 2012-11-15T19:43:19.410 に答える
2

理論的には、次のようawkに各行からファイル名を取得するために使用することもできます。

awk '{ print $1 }' input_file.log

もちろん、これはどのファイル名にもスペースがないことを前提としています。awkデフォルトでは、フィールド区切り文字として空白を検索するため、上記のスニペットは、各行のログファイル(ファイル名)から最初の「フィールド」を取得して出力します。

于 2012-11-15T19:47:57.993 に答える
0

bashのみのソリューション:

while read path otherstuff; do
    echo ${path##*/}
done < filename
于 2012-11-15T22:29:20.277 に答える