・やりたいこと・実現したいこと
文字列から構成される行列で、ある列の任意の5文字なら5文字を一律に削除して新しい行列を書き出す
下の例では2列目の、左から5文字目までを一律に削除して新しい行列を書き出す
・発生している問題
cutで処理した後の列のまとめ方、あるいは、最適なコマンドの組み合わせが分かりません。
・下記の例で説明します。
初期ファイル
sample3.csv
1|L001|AAAAAAAAAA|+++|ABC| 2|L002|BBBBBBBBBB|---|DEF| 3|L003|CCCCCCCCCC|+-+|GHI| 4|L004|DDDDDDDDDD|-+-|JKL|
最終的に作りたいファイル
sample4.csv
1|L001|AAAAA|+++|ABC| 2|L002|BBBBB|---|DEF| 3|L003|CCCCC|+-+|GHI| 4|L004|DDDDD|-+-|JKL|
となります。
cutを使って切り出す方を表示できることは分かったので、
bash
1$ awk -F, '{print $2}' sample3.csv | cut -c 1-5
以下のように残す方を一旦別のファイルに保存して、
bash
1$ awk -F, '{print $2}' sample3.csv | cut -c 6- > sample5
この後、元のファイルのフィールド1、sample5、元のファイルのフィールド3、フィールド4とすればできると思うのですが、ここのやり方が分かりません。(sample5を作らなくてもよいとは思うのですが、こうするより仕方ありませんでした。)
trはうまくういかないのですが、活路はあるのでしょうか。
bash
1$ awk -F, '{print $0}' sample3.csv | tr -d ‘AAAAA’ > sample4 #あるいは 2$ awk -F, '{print $0}' sample3.csv | tr -d AAAAA > sample4
では、Aが全て抜けてしまいます。
2列目だけに絞って、
bash
1$ awk -F, '{print $2}' sample.csv | tr -d .....
では、何も変化がありません。#-dの後は、任意の1文字を5個続ければ削除になるかと考えたのですが、削除の起点がありませんので、自分でも機能しないと思います。
タグにはawkを入れましたが、awk以外のコマンドでも結構です。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/08 00:44