嗨,我有一个包含以下内容的文件
> 1234 alphabet /vag/one/arun
> 1454 bigdata /home/two/ogra
> 5684 apple /vinay/three/dire
但我希望输出像
> 1234 alphabet one
> 1454 bigdata two
> 5684 apple three
答案 0 :(得分:0)
awk '{
split($NF,ar,"/");
$NF=ar[3]
for (i=1;i<=NF;i++) {
printf "%s ",$i
}
printf "\n"
}' filename
取空格分隔的最后一个字段,并将其拆分为基于&#34; /&#34;的数组ar,最后一个字段等于ar中的第三个元素,然后遍历打印它们的字段。
答案 1 :(得分:0)
将每条输入线切成碎片,将不需要的部件扔进废纸篓,然后重新组装剩下的部分。例如:
grep -Eo '(^|/[^/]+/|/[^/]+$|[^/]+)' <INPUTFILE| grep -Fv /|xargs -L 2 -d '\n' echo >OUTPUTFILE
答案 2 :(得分:0)
您可以通过控制IFS
(内部字段分隔符)来实现,当它包含'/'
字符时会导致字段拆分允许您将a/b/c
读入单独的变量。那么只需要打印您想要的变量,例如将您的原始内容放在file
,
$ while IFS="${IFS}/" read -r n l a b c; do echo "$n $l $b"; done < file
1234 alphabet one
1454 bigdata two
5684 apple three