
以下の行を含むファイルがあります。
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番目のスラッシュが含まれます。