[英]Delete Last String (Unix Shell Script)
我想從包含多個空格分隔的字符串的 Linux/Unix 變量中刪除最后一個字符串 -
strings='Y NULL NULL NULL NULL NULL 20210607 NULL NULL NULL NULL NULL NULL EXCEL'
我想刪除最后一個字符串,即EXCEL
預計 Output -
Y NULL NULL NULL NULL NULL 20210607 NULL NULL NULL NULL NULL NULL
其他輸入集 -
str1='RUB 20210607 SPREAD'
str2='RUSSIA NULL NULL NULL 20210607 Y Y Y N N Y Y HTML'
str3='LONDON NULL NULL NULL 20210607 Y Y Y N N Y Y CSV'
PS - 這里的字符串是非空格字符的尾隨序列。
shell 可以刪除或替換前導或尾隨模式。
strings='Y NULL NULL NULL NULL NULL 20210607 NULL NULL NULL NULL NULL NULL EXCEL'
echo "${strings% *}"
印刷
Y NULL NULL NULL NULL NULL 20210607 NULL NULL NULL NULL NULL NULL
僅當您想打印結果值時才需要echo
命令。 當然,您可以像使用變量擴展一樣使用${strings% *}
,例如somecommand $strings
vs. somecommand ${strings% *}
或somecommand "$strings"
vs. somecommand "${strings% *}"
,取決於您的需要。
引用https://pubs.opengroup.org/onlinepubs/009604499/utilities/xcu_chap02.html
${parameter%word}
刪除最小后綴模式。 這個詞應該被擴展以產生一個模式。 然后參數擴展將導致參數,其中后綴的最小部分與模式匹配刪除。
您好,您可以使用以下命令嘗試使用awk
:
strings='Y NULL NULL NULL NULL NULL 20210607 NULL NULL NULL NULL NULL NULL EXCEL'
awk '{$NF="";print}' <<< "$strings"
Output
Y NULL NULL NULL NULL NULL 20210607 NULL NULL NULL NULL NULL NULL
您也可以通過將字段分隔符設置為“EXCEL”來獲取它。
awk -F " EXCEL" '{print $1}' <<< "$strings"
Output 是
Y NULL NULL NULL NULL NULL 20210607 NULL NULL NULL NULL NULL NULL
從op澄清后編輯
下面會起作用,但這個線程中有比我的解決方案更好的方法。 發布這個以獲取一些品種。
awk 'BEGIN{ORS=" ";}{for(i=1;i<NF;i++)print $((i));}END{print "\n"}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.