一行の最後のいくつかの内容を印刷するには?

一行の最後のいくつかの内容を印刷するには?

以下の行を含むファイルがあります。

ta=/*92/*39/*1/*649/*12
ta=/*92/*12/*4/*342/*90
ta=/*92/*33/*9/*455/*3
ta=/*92/*12/*3/*649/*25
ta=/*92/*99/*7/*649/*7

など。

以下のような出力を持つファイルが必要です。

*12
*90
*3
*25
*7

これは、4番目のスラッシュの後の最後の部分だけを印刷したいという意味です。

私は一生懸命働いたcat filename | awk '{print $1}'。それは出力を提供します

ta=/*92/*39/*1/*649/*12

しかし、私の要件は数字だけを得ることです*12

答え1

カットを試してみてください。たとえば、次のようになります。cut -d/ -f6 file

答え2

を使用するには、awk質問に示すように設定できます。フィールド区切り記号次に、/最後のフィールドを印刷します。

awk -F/ '{print $NF}' filename

答え3

GNU grepを使用してください:

grep -o '\*[0-9]\+$' file

出力:

*12
*90
*サム
*25
*7

答え4

あなたが望むものが何であるかについて少し曖昧さがあります。欲しいならすべて5番目のスラッシュの後には、次を使用します。

sed -r 's|^([^/]*/){5}||;t;s|.*||' filename

やや病的で、家庭に疑問を持ち、境界に挑戦する入力の場合

ta=/*92/*39/*1/*649/*12
ta=/*92/*12/*4/*342/*90
foo/The/quick/brown/fox
bar/jumps/over/the/lazy/dog
/Once/upon/a/midnight/dreary
/as/I/pondered/weak/and/weary

これにより、次の出力が提供されます。

*12
*90

dog
dreary
and/weary

入力の3行目には4つのスラッシュしかないため、出力の3行目は空です。したがって、5行目以降は何もありません(なぜならはい5番目のスラッシュはありません)。 6番目(最後)の出力行には/6番目の入力行に6つのスラッシュがあります。すべて「5番目のスラッシュ以降」には、6番目のスラッシュが含まれます。

関連情報