Shell-Script

如何從某些輸出的每一行修剪前導和尾隨空格?

  • October 5, 2021

我想從輸出的每一行中刪除所有前導和尾隨空格和製表符。

有沒有像trim我可以將輸出輸入管道的簡單工具?

範例文件:

test space at back 
test space at front
TAB at end  
   TAB at front
sequence of some    space in the middle
some empty lines with differing TABS and spaces:





test space at both ends 
awk '{$1=$1;print}'

或更短:

awk '{$1=$1};1'

將修剪前導和尾隨空格或製表符1 並將製表符和空格序列壓縮到一個空格中。

之所以有效,是因為當您將某些內容分配給其中一個欄位時,會通過將所有欄位 ( , …, ) 與(預設情況下為空格) 連接awk來重建整個記錄 (由 列印)。print``$1``$NF``OFS

要同時刪除空白行,請將其更改為awk '{$1=$1};NF'(其中NF告訴awk僅列印欄位數非零的記錄NF。不要像有時建議的那樣awk '$1=$1',因為這也會刪除第一個欄位是0awk( 0, 00, -0e+12…)支持的任何表示的行

1(可能還有其他空白字元,具體取決於語言環境和awk實現)

引用自:https://unix.stackexchange.com/questions/102008