1
在Linux C Shell中,我需要用包含一組數字和字符串的變量替換文件中的一行。我正在使用printf,xargs和sed的組合來保存this answer所建議的格式。 這是我的代碼到現在(我找不到在csh一個更簡單的方法):xargs不保留格式爲012的前導空格
> echo " 2 2 2 2 2 2 2 2 Number of gradient directions" > myfile.txt
> set ndir = `repeat 8 printf ' 2'`
> set ndir[1] = 16
> set afmt1 = `repeat 8 printf '%%3d'`
> set afmt = "$afmt1%s"
> printf "$afmt" $ndir " Number of gradient directions" | xargs -I '{}' sed -i '/Number of gradient directions/c\{}' myfile.txt
結果是:
> cat myfile.txt
16 2 2 2 2 2 2 2 Number of gradient directions
但我需要:
> cat myfile.txt
16 2 2 2 2 2 2 2 Number of gradient directions
唯一的問題是該行僅爲變量$ ndir的第一個索引丟失了%3d格式。我需要保留整條線的格式。有沒有更微妙的方式或修復這種方式?
你是驚人的,謝謝。我改變了我的問題的標題,以便其他人可以更容易地找到他們的相關問題。 –
@ S.M .:我的榮幸 - 感謝您更新問題的標題。 – mklement0