我有一个包含以下内容的文件:
#sometext=0 sometext=1 #sometext=5 sometext=34
并且无法获得
sometext=1
sometext=34
我试过了:
for (i=1; i<=4; i++){
if ($i ~ /[^#]sometext=/){
print $i
}
}
但这不起作用
答案 0 :(得分:1)
你可以这样做
awk '{ for (i=1;i<=NF;i++) if ( $i ~ /^sometext=/ ) print $i }'
它的作用是什么?
for (i=0;i<=NF;i++)
遍历每一栏
NF
,字段数是每行中的字段总数 if ( $i ~ /^sometext=/ )
检查相应的列是否以sometext=
开头
<强>测试强>
$ echo "#sometext=0 sometext=1 #sometext=5 sometext=34" | awk '{ for (i=1;i<=NF;i++) if ( $i ~ /^sometext=/ ) print $i }'
sometext=1
sometext=34
答案 1 :(得分:1)
如何使用简单? sed
$echo "#sometext=0 sometext=1 #sometext=5 sometext=34" | sed 's/#[^ ]*//g'
sometext = 1 sometext = 34
答案 2 :(得分:0)
或者是另一个比@ nu11p01n73R的答案更精简的awk版本:
echo "#sometext=0 sometext=1 #sometext=5 sometext=34" | awk '
BEGIN{RS=" "}
/^sometext/{print}
'
将由空格分隔的所有内容标记为新的“记录”,仅打印以 sometext 开头的记录。