[英]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.