[英]Grep and print only beginning and end of a string
我有一个字符串列表,它们是产品代码,后跟产品描述和价格。 我想Grep
并只打印产品代码和价格。 产品代码是大写字母和数字的组合,价格是数字,逗号是小数点。 代码,描述和价格用空格分隔,如:
AA1AA This is an example for free 0,00
BE661N For your 0,02
输出将是:
AA1AA 0,00
BE661N 0,02
我已经尝试了几个与-o
和-v
开关组合的regexp但是失败了。 一如既往, Awk
解决方案也很受欢迎。
通过sed。
sed 's/[[:blank:]].*[[:blank:]]/ /' file
[[:blank:]].*[[:blank:]]
将匹配从第一个空格到最后一个空格的所有字符。 用空格替换所有匹配的字符将为您提供所需的输出。
GREP
我使用grep
添加一个解决方案(注意:最好使用awk
或sed
,这只是出于好奇)
grep -E -o "^\S+\b" file | paste - <(grep -E -o "\b\S+$" file)
你得到:
AA1AA 0,00 BE661N 0,02
BASH
此外,我添加了一个使用纯bash
和参数扩展的解决方案
while read line; do
echo "${line/%\ */} ${line##* }";
done < file
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.