要件がいまいちわからない点もありますが、以下のようなスクリプトを作成の上、実行属性をつけて、
#!/usr/bin/awk -f
BEGIN {
prevline = ""
}
{
print $0
if ( $0 == prevline ) {
print ">"
}
else
prevline = $0 ""
}
テキストファイルが text.txt で、スクリプトファイルが script.awk だとすると
$ cat text.txt | ./script.awk
とかでいけませんか
やってるのは、ある行の内容が直前の行と同じ場合は、次の行に「>」を出力するというだけです。
回答ありがとうございます。
例として挙げた内容が全くよくありませんでした。恥ずかしい...
訂正させていただくと、二列目の数字が変わるところに">"の行を挿入するスクリプトを書きたいと思っています。二列目に同じ数字が続く回数は不定です。
方法がありましたら、もしよろしければまた回答していただけるでしょうか。
gawkを使えばできます。
awkスクリプトを以下に示します。
{ if (NR == 1) { str = $0; } else if ($0 != str) { print ">"; str = $0; } print $0; }
条件ってなんですか?それによって全く答えが変わります。
前の行と内容が変わったら、ならこんな感じ
cat a.txt | awk '(1<FNR && t!=$_){print ">"} {print; t=$_}'
2行毎、ならこんな感じ
cat a.txt | awk '(1<FNR && FNR%2==1){print ">"} {print}'
やりかたはいくらでもあります。
別にawkじゃなくても良いですが、条件が分からないと何が一番簡単にできるかも変わります。
そうですよね。ばかでした。
最初の方の回答への返信にも書きましたが、二列目の数字が変わるところに">"の行を挿入するスクリプトを書きたいと思っています。二列目に同じ数字が続く回数は不定です。
▽4
●
y-kawaz ●25ポイント ベストアンサー |
>二列目の数字が変わるところ
ならこれで
cat a.txt | awk '(1<FNR && t!=$2){print ">"} {print; t=$2}'
ありがとうございます!