我需要替換名字的「無關緊要」的部分。這需要在bash腳本中完成。爲此,我需要刪除中間單詞「VAN」,「DEN」,「DE」和「DER」。
要做到這一點,我使用內置的替換(問題降低到2行):
line="STIG VAN DE WYNKELE";
line=${line//@(' VAN '|' DEN '|' DE '|' DER ')/' '};
echo $line;
輸出:
STIG DE WYNKELE
預期輸出:
STIG WYNKELE
看起來像@(...)與中間單詞中的一個匹配,消除了這個中間單詞的所有出現,但它不匹配其他單詞RS。
問題:我的語法錯了嗎?如果不是,我將如何刪除這些字詞? sed需要文件,而我的輸入是一個變量,並且修改過的文本也應該存儲在一個變量中。 ($行應改變)
'sed'不需要的文件,這是一個流編輯器。 'foo = $(echo「$ foo」| sed ...)'是一個常見的習慣用語。 –
常見,但如果'$ foo'很短,通常不需要。 – chepner