我有一个字符串列表,它们是产品代码,后跟产品描述和价格。我想Grep
并仅打印产品代码和价格。产品代码是大写字母和数字的组合,价格是数字,逗号是小数点。代码,描述和价格用空格分隔,如:
AA1AA This is an example for free 0,00
BE661N For your 0,02
,输出为:
AA1AA 0,00
BE661N 0,02
我已经尝试了几个与-o
和-v
切换相结合的正则表达式但是失败了。与往常一样,Awk
解决方案也值得赞赏。
答案 0 :(得分:4)
答案 1 :(得分:2)
通过sed。
sed 's/[[:blank:]].*[[:blank:]]/ /' file
[[:blank:]].*[[:blank:]]
将匹配从第一个空格到最后一个空格的所有字符。用空格替换所有匹配的字符将为您提供所需的输出。
答案 2 :(得分:1)
<强> 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
和parameter expansion
while read line; do
echo "${line/%\ */} ${line##* }";
done < file