我有一个文件,其中包含如下所示的行,
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
请注意,输出的第三行是空白的,因为输入的第三行只有四个斜杠,所以第五行之后没有任何内容(因为有是没有第五个斜杠)。输出的第六(最后)行包含一个/
,因为输入的第六行有六个斜杠,并且“一切第五条斜线之后”包括第六条斜线。