簡體   English   中英

Grep並僅打印字符串的開頭和結尾

[英]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解決方案也很受歡迎。

你可以使用awk:

awk '{print $1, $NF}' file
AA1AA 0,00
BE661N 0,02

$1是第一個字段, $NF是每個記錄中的最后一個字段。

通過sed。

sed 's/[[:blank:]].*[[:blank:]]/ /' file

[[:blank:]].*[[:blank:]]將匹配從第一個空格到最后一個空格的所有字符。 用空格替換所有匹配的字符將為您提供所需的輸出。

GREP

我使用grep添加一個解決方案(注意:最好使用awksed ,這只是出於好奇)

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM