2015-11-04 34 views
0

我試圖替換自己的文件的第3列加上列2的值(沒有任何空格)。我得到變量c和a的正確值,但sed沒有給出任何輸出。任何線索?tcsh和sed:沒有輸出

#!/bin/tcsh 
setenv c `cat lig_mod.pdb | awk '{print $3}'` 
echo $c 
setenv a `cat lig_mod.pdb | awk '{print $3=$3$2}'` 
echo $a 
sed -i "" 's/^'"${c}"'$/^'"${a}"'$/g' lig_mod.pdb 
+0

'sed'命令正在對文件進行操作(來自'-i')。它也與'c'的值本身相匹配,是你想要的嗎?它也會用'^ $'替換那一行,這可能不是你想要的。 –

+0

如果我將-i替換爲-e(sed不適用),我也沒有在文件中進行任何更改。 – schrodingersbird

+0

如果您刪除'-i',則'sed'不會更改文件並將其發送到標準輸出。我無法分辨您是否正在尋找標準輸出,並且之前沒有看到它,所以我把它扔進去了。阻止變化發揮作用的主要問題是您的模式和替換都不正確,正如我也指出的那樣。模式中的^ ^匹配行的開始,而不是「單詞」的開始。行尾的'$'相同。 –

回答

0

即使awk通常用於分析這一個班輪sed列可以更好地爲你工作,以及:

sed -i 's/ \(\w*\) \(\w*\)/\1 \2\1 /1' lig_mod.pdb 

的「/ 1」末表示你的願望實例號更改第二列和第三列是第一列,但您可以將它用於任何相鄰的列。