12行3列のテキストファイルが複数あります。
例:
2 6 0.74
42 6 0.58
80 6 0
112 6 0.24
132 6 1
216 6 0.7
342 6 0
390 6 0.21
432 6 0.56
466 6 0.75
524 6 0.6
646 6 0.9
すべての行で3番目の列のすべての値を1に設定したい。
出力は次のようになります。
2 6 1
42 6 1
80 6 1
112 6 1
132 6 1
216 6 1
342 6 1
390 6 1
432 6 1
466 6 1
524 6 1
646 6 1
この問題を解決できるコマンドを知っている人はいますか?
awk '{print $1, $2, "1"}' inputfile
試す
awk '{$3=1 ; print ;}' oldfile > newfile
$3 = 1
は3番目のフィールドを1に設定しますsed
とその-i
オプションをインプレース編集して)sed -i 's/[0-9.]*$/1/' file
[0-9.]*$
は、0
から9
および.
から行末までのシーケンスです。sed -i 's/[^ ]*$/1/' file
[^ ]*$
行末までスペース以外の任意の文字。予想される出力の行は2つのスペース文字で終了しているようで、1つのタブと1つのスペース文字で区切られたフィールドがあります。
それが本当にあなたが望むものであるなら、あなたは必要になるでしょう:
awk -v 'OFS=\t ' '$3="1 "' < infile > outfile
またはsed
を使用:
tab=$(printf '\t')
sed "
s/[[:blank:]]\{1,\}/$tab /g
s/[^[:blank:]]\{1,\}[[:blank:]]*$/1 /
s/^[[:blank:]]*//" < infile > outfile
単にGNU sed
を使用し、-i
を使用してファイル内のテキストを直接置換します。
sed -i 's:\(.*\s\)\(.*\s\)\(.*\):\1\21:g' textfile
かっこ内の列は正規表現グループによって照合され、\1
および\2
で再利用し、最後のグループを置き換えるために「1」を使用します。
この使用例では、awk
を使用して提案された解決策も適切で簡潔です。
これは仕事をします:
cat textfiles | cut -d' ' -f-2 | sed 's/$/ 1/'