簡體   English   中英

Shell腳本子字符串直到空格

[英]Shell script substring till space

我最願意告訴任何人,在測試完空格/制表符后面的內容是另一個指定的子字符串后,我如何才能提取所有字符,直到第一個空格或制表符? 例如包含

php server-side
asp server-side
css client-side
html client-side
golang server-side

當逐行讀取可用於生成字符串時

php asp golang

即,以客戶端結尾的行全部掉線,包含服務器端的行在該空格處被截斷。

這個命令可以解決問題,

grep "server-side" filename|cut -d ' ' -f1|tr '\n' ' '

解釋如下;

grep "server-side" filename

它將僅捕獲與字符串在服務器端匹配的行。

cut -d ' ' -f1

cut commmand將按定界符空間切割表的第一列。

tr '\n' ' '

tr命令將所有換行符替換為空格。

輸出將恰好是OP在問題(要求)中提到的內容:

php asp golang

如果您的意圖是無論如何都要在Shell循環中遍歷令牌,則Shell內置了空格分隔。

sep=''
while read -r lang feat; do
    case $feat in "client-side" ) continue;; esac
    printf '%s%s' "$sep" "$lang"   # replace this with something actually useful?
    sep=' '
done <<____HERE
    php server-side
    asp server-side
    css client-side
    html client-side
    golang server-side
____HERE

通過sed

$ sed -n 's/[[:space:]]\+server-side$//p' file
php
asp
golang

如果要折疊輸出,請將輸出傳遞給tr命令。

sed -n 's/[[:spacee$//p' ri | tr '\n' ' '
grep "server-side" FILE_NAME | awk '{print $1}'

說明:grep“服務器端” FILE_NAME可以過濾掉那些客戶端條目。 然后awk'{print $ 1}'只能打印文本的第一行。

grep server-side foo.txt | cut -d' ' -f1 | paste -s -

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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