如何打印一行中的最后几个内容?

如何打印一行中的最后几个内容?

我有一个文件,其中包含如下所示的行,

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

这意味着我只想打印第四个斜杠之后的最后一部分。

我努力了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
*3
*25
*7

答案4

我发现对于您想要什么存在一些含糊之处。如果你想一切在第五个斜杠之后,使用

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

请注意,输出的第三行是空白的,因为输入的第三行只有四个斜杠,所以第五行之后没有任何内容(因为有没有第五个斜杠)。输出的第六(最后)行包含一个/,因为输入的第六行有六个斜杠,并且“一切第五条斜线之后”包括第六条斜线。

相关内容