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