2

私はLinuxが初めてで、次のことを達成するのに苦労しています。各行にパッケージ名を含むファイルがあります。

例えば:

abc/123/new/package/abc/123/new/package
abc/124/new/package/abc/123/new/package
abc/125/new/package/abc/123/new/package
abc/126/new/package/abc/123/new/package

パッケージ名が繰り返されています。各行の 2 番目の abc から始まる後半だけが必要で、それをファイルに出力します。

私は awk と sed について調べてみましたが、これは、このことを学ぼうとしている最初の日には少し進んでいるようです。前もって感謝します。

4

4 に答える 4

1

次の sed コマンドを使用できます。

sed -E 's#^.*(abc/.*)$#\1#g' file
于 2012-08-30T16:25:47.720 に答える
0

これを行う方法はたくさんあります。保持するテキストが常に同じ列位置(21)で始まる場合は、次を使用します。

cut -b 21- < input-file > output-file

常に「abc...」が最後に出現する場合は、次のことを試してください。

awk '{print FS $NF}' FS=abc input-file > output-file
于 2012-08-30T17:18:45.403 に答える
0

sed を使用して最初の 4 つのレベルを削除します。

sed 's!^[^/]*/[^/]*/[^/]*/[^/]*!!' input_file

または繰り返しパターンを使用:

sed 's!^\([^/]*/\)\{4\}!/!' input_file
于 2012-08-30T16:24:55.540 に答える
0

これは次のようになります。

sed -E 's,^.+(abc/),\1,'input_file
于 2012-08-30T16:55:28.440 に答える