通过awk解析字符串并仅获取不带管道或分号的元素

通过awk解析字符串并仅获取不带管道或分号的元素

我想要这个字符串

AUGUSTYN|Stanisław|3589238

没有|:

我尝试过类似的事情:

cat baza|grep "AUGUSTYN" -n|awk -F '|' '{print $1,$2,$3,$4}'`

baza是我的文本文件,AUGUSTYN是人名)

该命令的结果是:

1:AUGUSTYN Stanisław 3589238 

正如你所看到的,还有这个管道:(我想得到这个:

1 AUGUSTYN Stanisław 3589238

我从这个基本文件中获取文本:

AUGUSTYN|Stanisław|3589238
BARAN|Stanisław|3511477
BUCZEK|Marek|3511526
CABAJ|Wanda|3511483
CEPAK|Józef|3511067

|获取没有and的字符串:会很棒,但是我必须获取存储该文本的行数。所以我不得不使用grep。如果您也能找到任何其他更明显的解决方案,那就太好了。

我怎样才能存档它?我一小时前就开始学习这个awk。请帮忙。

答案1

grep没有必要,您可以awk单独执行此操作:

awk 'BEGIN{FS="|"} $1 == "AUGUSTYN" { print NR " " $1 " " $2 " " $3}'

答案2

| sed "s/:/ /"在命令末尾添加怎么样?所以就像这样

cat baza|grep "AUGUSTYN" -n|awk -F '|' '{print $1,$2,$3,$4}' | sed "s/:/ /"

除非我误解了你的意思,而你想用 1 个命令来完成这件事。

相关内容