awkプログラミングの初心者です。
複数ファイルをuniq -cで重複している行数を抽出し、awkで1つのテキストファイルに出力したいと考えております。
具体的には、echo file1,file2,file3 >>fail_output.txtで行にfileA,failB,failCの文字列を作成
1列目にA店~D店の行数を表示させたい文字列を表示、2列目以降には重複している行数をfileA,failB,
failCの列に出力したいと考えております。
awkを使って出力するには、どのようなシェルスクリプトを作成すればよいか、ご教授頂けないでしょうか。
<イメージ>
file1.txt (fileA)
A店
A店
B店
C店
file2.txt (fileB)
A店
B店
B店
C店
C店
file3.txt (fileC)
A店
A店
B店
C店
D店
D店
D店
アウトプットとして出力したいファイルの作成:
echo file1,file2,file3 >>fail_output.txt
出力後のファイルイメージ:(fail_output.txt)
fileA,fileB,fileC
A店 ,2 ,1 ,2
B店 ,1 ,2 ,1
C店 ,1 ,2 ,1
D店 ,3
現在、1つのファイルから重複した行数しかできず勉強不足もあってお手上げ状態です。どなたかご存知の方いらっしゃいましたら宜しくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
perlで良いなら、そのスクリプトを提供することは可能です。
以下、それで良い前提での補足要求です。(perlがNGならNGの旨のみ補足してください。下記の補足要求への回答は不要です)
1)出力ファイルの1行目は見出し行になるかと思いますが、
いきなり"fileA,fileB,fileC"でOKですか?
それとも最初は空白をいくつか入れるのですか。
□□□fileA,fileB,fileC・・・・□は半角の空白とします。この場合は、半角の空白3個の後に、ファイル名を出力しています。
2)出力例をみると、店名の後に半角の空白を1つ付加し、重複行数の後に全角の空白を1つ付加しています。
A店 ,2 ,1 ,2・・・・・A店の後に半角空白が1つ、2の後に全角の空白が1つ、1の後に全角の空白が1つ、付加されています。
本当にこのようなフォーマットで良いのでしょうか。
空白、タブなどを入れる場合は、そのフォーマットをきちんと提示してください。
3)D店のようなケースの場合は、
D店,,,3 又は
D店,0,0,3
のどちらかにしたいのですが宜しいでしょうか。
ご回答ありがとうございます
perlは使用しないためNGでお願い致します.
補足事項として3点を書き直します。
解りずらく申し訳ありません。
No.2
- 回答日時:
店舗4つ、ファイル3つで決めうちすれば
$ awk -f goo.awk file1.txt file2.txt file3.txt
と呼び出すとして、goo.awk は次のような感じ。
(一応、x でファイルカウントしているが3つに固定ですよ)
BEGIN {
x = 0
}
{
if (FNR == 1) ++x
if ($1 == "A店") a[x] += 1
else if ($1 == "B店") b[x] += 1
else if ($1 == "C店") c[x] += 1
else if ($1 == "D店") d[x] += 1
}
END {
print " fileA,fileB,fileC"
OFS = ","
print "A店", getval(a, 1), getval(a, 2), getval(a, 3)
print "B店", getval(b, 1), getval(b, 2), getval(b, 3)
print "C店", getval(c, 1), getval(c, 2), getval(c, 3)
print "D店", getval(d, 1), getval(d, 2), getval(d, 3)
}
function getval(array, i)
{
if (i in array) return array[i]
return 0
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- PHP 文字列を段落で分ける方法を教えて下さい。 2 2023/03/09 10:03
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- iOS ファイルの名前変更 2 2022/08/11 20:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
ドメインからIPアドレスあるい...
-
DOSコマンドで、標準出力を出力...
-
エクセルVBAで素数だけを出力す...
-
至急お願いします。C言語で.img...
-
VBAでCSVファイルを途中行まで...
-
openした後、closeしないでプロ...
-
VBAでCSVファイルの特定行を書...
-
エクセルVBA コードが同じでも...
-
バッチファイルの作り方(CSV→...
-
csvファイルの横方向への改行に...
-
ExcelをCSV書き出す場合のシー...
-
drtファイルはどうしたら開...
-
無料配布の郵便番号自動入力cgi...
-
ファイルからある文字列の個数...
-
close()で例外が投げられる理由
-
Perlで フォルダ内の全て...
-
Perl 特定のフォルダ以外削除
-
JSP URLに表示される拡張子 .jsp
-
csv出力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
DOSコマンドで、標準出力を出力...
-
エクセルVBAで素数だけを出力す...
-
sprintfについて
-
教えて!perlから.exeファイル...
-
Perlでファイルの末尾から指定...
-
重複するデータを抽出できる秀...
-
ファイル出力の改行コードをLFに
-
CGIから外部コマンド実行時の標...
-
timeコマンドの結果をテキスト...
-
log2の「正確な」計算方法
-
sprintfで10進数を桁数指定で16...
-
Perl<->Oracle間での文字化けに...
-
機器のI/OをArduinoでSDに記録...
-
バッチファイルで、記号を含む...
-
テキストファイルから日本語部...
-
Perl中で teeを使っても戻り値...
-
perlでの出力先設定
-
htmlから、ファイル、もしくはC...
-
標準エラーと標準出力をファイ...
おすすめ情報
<イメージ>の出力内容として解りずらい点がありましたため,一部修正致します。
出力ファイルの1行目は見出し行は
□fileA,fileB,fileC となります。:・・・□は半角空白
出力例としては、店名の後に半角の空白は入れない形式としています。
D店の場合は0と出力するよう考えております。
以下,修正した出力例となります。
□fileA,fileB,fileC
A店,2,1,2
B店,1,2,1
C店,1,2,1
D店,0,0,3
出力例が解りずらく申し訳ありません。どなたかご教授を頂けたらと思います。