2017-03-14 15 views
0

awkのような簡単なunixコマンドがあります。これは、すべての列を同じ行のすべての行と置き換えることができます。現在、テキストファイルの第8列には、ランダムな1桁の数字があります。私はすべての行でこれを原子要素記号(1つまたは2つの文字)に置き換える必要があります。ファイル全体で同じ文字になります。したがってテキストファイル内の列全体を置き換えます。

1 2 3 a b c x 4 

1 2 3 a b c x 7 

1 2 3 a b c x 2 

1 2 3 a b c x U 

1 2 3 a b c x U 

1 2 3 a b c x U 

ことなく、数千行でなければなりません。

答えて

0

@try:

awk '{$NF="U";print}' Input_file 

または単にそれぞれの行に "U" の最後のフィールドを変更し、それを印刷し

awk '{sub(/.*/,"U",$NF);print}' Input_file 

0

Perlが動作します:あなたがあなたの元のファイルを保つことができるように

perl -alne "$F[7]= 'U'; print (join ' ', @F) ;" characterFile.txt > characterFile2.txt

はcharacterFile2.txtであなたの結果を置きます。

これは実際には8番目の列を変更します(スペース区切りを前提としています)。したがって、8つ以上の列を持つことができ、8番目の列のみが変更されます。あなたは以下の8列....

0
awk '{sub(/x ./,"x U")}1' file 
1 2 3 a b c x U 

1 2 3 a b c x U 

1 2 3 a b c x U 
0

を持っている場合、おそらくBARF列7は、最後の列のとき:

sed 's/.$/U/' inputfile 

はtmpファイルにリダイレクトして、sedがサポートしていないときにそれを動かします-iフラグ:

sed -i 's/.$/U/' inputfile