
PowerShell初心者です。この度、PowerShellを使ってテキスト編集をすることになりましたが、どこから手をつけたらいいのかいまいち分かりません。
編集しようと思っているのは以下についてですが、どのようにコーディングしたら動かせるのかご教示いただけませんでしょうか。
よろしくお願いいたします。
(編集したいこと)
①編集前ファイル(lst01.txt)を、10バイトずつ改行コードを投入し、編集中間ファイル(lst02.txt)へ出力します。
②編集中間ファイル(lst02.txt)のデータから、abcdefg(先頭7バイト)を含む行のデータを削除し、編集後ファイル(lst03.txt)へ出力します。
※abcdefgxxxのうち、abcdefgは固定、xxxは連番です。001のみの時もあれば、001~005の時、001~007までの時とかもあります。
※abcdefgxxx以外のデータ件数は、その時によって異なります。
(実行例)
◎編集前ファイル lst01.txt
abcdefg001111111111122222222223333333333abcdefg0024444444444555555555566666666667777777777
◎編集中間ファイル lst02.txt
abcdefg001
1111111111
2222222222
3333333333
abcdefg002
4444444444
5555555555
6666666666
7777777777
◎編集後ファイル lst03.txt
1111111111
2222222222
3333333333
4444444444
5555555555
6666666666
7777777777
No.1ベストアンサー
- 回答日時:
こんな感じでいかがですか?
※lst02.txt isl03.txtには追加モードで書き込んでいるので、元からこのファイルが存在する場合には予め削除することが必要です。
$file1 = "c:\powershell\lst01.txt"
$file2 = "c:\powershell\lst02.txt"
$file3 = "c:\powershell\lst03.txt"
$prefix = "abcdefg"
$buf = Get-Content $file1
for ($i = 0; $i -lt $buf.Length; $i += 10){
$line = $buf.Substring($i,10)
Out-File $file2 -Append -InputObject $line
}
$ary = @(Get-Content $file2)
foreach($line in $ary){
if($line.SubString(0,7) -ne $prefix){
Out-File $file3 -Append -InputObject $line
}
}
siffon9様
この度はご多忙のところ、お教え頂きありがとうございました。
回答していただいた内容で問題なく動作しました。
この後もファイルレイアウトで要望事項が増えましたが、
教えたいただいた内容を応用すればできそうですので、
参考にさせて頂きます。
また、lst02.txtやlst03.txtも処理終了後に削除するように
別バッチを動かして対応いたします。
ありがとうございました。
No.2
- 回答日時:
> 作ってみたい内容は、以下のような感じですが、
> このような変換もできますでしょうか。
もちろん可能ですが、そのまま回答しては質問者様のためにもなりませんので要点だけ回答します。
システム日付8桁の文字列の求め方は
(Get-Date).ToString("yyyymmdd")
文字列の連結は ’+’で可能です。
例:"Hello " + "World" → "Hello World"
あとはNo.1で回答した内容の動作を理解すれば作れます。
がんばってみて下さい。
siffon9様
補足質問の回答もして頂き、ありがとうございました。
回答そのものではなく、考え方をご教授いただけただけで十分ありがたいです。
本日、siffon9様から教わった考え方を参考にさせて頂き、
他のパターンでも日付取得をしてみたりして、無事に動作しました。
他にもエラーチェック等もかけたいので、
明日以降も作成してみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Google Drive Googleスライドについて 1 2023/05/01 00:11
- その他(クラウドサービス・オンラインストレージ) iPadとクラウドの同期はできないですか? 1 2022/05/21 09:34
- Word(ワード) PCで作ったwordをスマホで編集しようとすると「このファイルは読み取り専用です。」と表示される。 3 2023/05/30 14:51
- iCloud iCloud Photosでダウンロードした画像に(編集済み)とつくのは何? 1 2023/02/27 11:16
- Excel(エクセル) Excelで、社外秘(閲覧のみ)と表示され、共有者が編集出来ないのですが 4 2023/06/20 17:54
- その他(インターネット接続・インフラ) (Google workspace)google以外のアカウントの利用制限と対策を相談させてください 1 2022/10/11 16:18
- タブレット ワンドライブ内のWordファイルの編集について 1 2022/07/01 15:59
- 画像編集・動画編集・音楽編集 Final Cut Proで編集中の動画で、写真ファイルやファインダーから削除したら編集中の動画も消 1 2023/03/18 20:00
- Excel(エクセル) エクセルの編集オプション セル移動 2 2022/04/02 09:19
- ビデオカメラ インスタ360 one rsについて 編集方法を覚えたいのですが、説明書がないので苦戦しています。編 1 2022/07/24 17:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
テキストファイルで提出とは?
-
ファイル内容の修正、行削除に...
-
リモートのファイル存在確認
-
psqlでエラーログをとりたい
-
ファイル名の一部をbatで変更し...
-
forコマンドのdelimsオプション...
-
Windowsのバッチファイルを利用...
-
renameコマンドについて
-
エクセルの各セルの内容をそれ...
-
ファイルを処理中に次の処理に...
-
VBSでフォルダ内のテキストファ...
-
Windows マシンでFTPバッチが動...
-
Excel VBAの文字列と数値の分類
-
バッチファイル 複数ファイル...
-
cshでファイルサイズ取得
-
バッチ(bat)でリストファイルか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
拡張子を元に戻す
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
psqlでエラーログをとりたい
-
COPYコマンドで結合すると余計...
-
エクセルの各セルの内容をそれ...
-
バッチファイルで文字列削除に...
-
ファイルの最後に文字列挿入
-
UWSCでテキストファイルを開い...
-
バッチファイル 複数ファイル...
-
renameコマンドについて
-
ファイル名の一部をbatで変更し...
-
forfilesで検索したファイルを...
-
外部exeに対しての引数受け渡し
-
Windowsのバッチファイルを利用...
-
VBSでフォルダ内のテキストファ...
-
VBAでエクセルをtxtに変換する...
-
ExcelVBA テキストファイルUNIC...
おすすめ情報
siffon9様
丁寧な回答をして頂き、ありがとうございます。
回答していただいた内容で、問題なく動きそうです。
もし可能でしたら追加でご質問させて頂きたいのですが、
lst03.txtでできたファイルからさらに編集をしてlst04.txtを作ってみたいと思っています。
作ってみたい内容は、以下のような感じですが、
このような変換もできますでしょうか。
(lst04.txtにできる結果)
半角スペース(4桁分挿入)・111(lst03の3バイト目から5バイト目まで)・AAA(3桁分挿入)・半角スペース(2桁分挿入)・20161128(システム日付8桁) … 全20バイトです
△△△△111AAA△△20161128
△△△△222AAA△△20161128
:
:
:
△△△△777AAA△△20161128