需要以下输出
ONGC044
ONGC043
ONGC042
ONGC041
ONGC046
ONGC047
来自此输入
Medium Label Medium ID Free Blocks
===============================================================================
[ONGC044] ECCPRDDB_FS_43 ac100076:4aed9b39:44f0:0001 195311616
[ONGC043] ECCPRDDB_FS_42 ac100076:4aed9b1d:44e8:0001 195311616
[ONGC042] ECCPRDDB_FS_41 ac100076:4aed9af4:4469:0001 195311616
[ONGC041] ECCPRDDB_FS_40 ac100076:4aed9ad3:445e:0001 195311616
[ONGC046] ECCPRDDB_FS_44 ac100076:4aedd04a:68c6:0001 195311616
[ONGC047] ECCPRDDB_FS_45 ac100076:4aedd4a0:6bf5:0001 195311616
答案 0 :(得分:6)
awk -F"[][]" 'NR>2{print $2}' file
答案 1 :(得分:3)
如果数据真的那么统一,那就是一个非常简单的管道:
cut -b 2-8
会为你做的。
(哦,除了前两行;如果你需要,可以在你的管道中用grep ^\[
删掉它们)
答案 2 :(得分:3)
我认为你想要的是:
awk '/^\[.*\]/ {print substr($1,2,7)}' < ~/tmp/awk_test/file
这假定您的第一个字段每次正好是9个字符(其中7个是您想要的字符)。如果不是这种情况,那么请使用以下代码从第一个字段中删除[和]:
awk '/^\[.*\]/ {gsub(/[\[\]]/,"",$1); print $1 }' < ~/tmp/awk_test/file
答案 3 :(得分:1)
这是一个只涉及awk的解决方案。我们的想法是让awk解析所需的列并从此令牌中删除不需要的方括号。唯一的“技巧”是“逃避”[
角色,以免它被理解为开放重新设置。 (我们也可以使用substr
,因为括号是第一个和最后一个字符)
{
#skip the column header lines
if (NR < 3)
next;
# $1 is almost what we want: [xxxx]
# ==> just remove the square brackets
sub("[[]", "", $1);
sub("]", "", $1);
print $1;
}