最新記事

パターンと一致しない行にテキストを追加する
linux
awk
sed
mysql

パターンと一致しない行にテキストを追加する

INSERT INTO `db`.`table` VALUES ( 39741633 49302045 0 44 '{"CustomerName":"S","CustomerMobile":"8","CustomerEmail":"","VersionId":"5","CityId":"2","CampaignId":"1","InquirySourceId":"3","Eagerness":"-1","ApplicationId":"2","BranchId":"3","AssignedDealerId":"2","DMSInqNo":"45"}' NULL 0 '2021-11-09 19:11:50' NULL 1 29 NULL ); INSERT INTO `db`.`table` VALUES ( 39741635 49970365 0 30 '{"CustomerName":"A","CustomerEmail":"[email protected]","CustomerMobile":"9","VersionId":"6","InquirySourceId":"1","Eagerness":"-1","IsCorporate":"z","CampaignId":"8","BranchId":"3","ApplicationId":"1","Location":{"City":{"CityId":"1"},"Area":{"AreaId":"4"}},"CouponCode":null,"CwOfferId":"0","AssignedDealerId":"0","PinCode":""}' NULL 0 '2021-11-09 19:11:51' NULL 1 29 NULL ); binlogからこれらの挿入文を抽出しました。まったくそう見えません。いくつか変更しましたが、まだ輻輳状態です。これを実際の挿入ステートメントに変換する必要があります。すべての挿入ステートメントについて、2行目(INSERT INTO db. VALUES())の後のすべての行の末尾にカンマを追加する必要があります。tableこれは、11行目までの2行の後にカンマを追加してから、INSERT INTOの後に再起動して繰り返すことを意味します。 Googleでこれを見つけました。 sed '/INSERT/{n;n;n;n;n;s/$/,/}' teststring.txt-->挿入後、5行目にカンマが追加されます。問題は、6行目をもう一度実行すると sed '/INSERT/{n;n;n;n;n;n;s/$/,/}' teststring.txt、最初のSEDコマンドによって配置された古いコンマを置き換えます。 ファイルの外観は次のとおりです。 INSERT INTO `db`.`table` VALUES ( 39741633, 49302045, 0, 44, '{"CustomerName":"S","CustomerMobile":"8","CustomerEmail":"","VersionId":"5","CityId":"2","CampaignId":"1","InquirySourceId":"3","Eagerness":"-1","ApplicationId":"2","BranchId":"3","AssignedDealerId":"2","DMSInqNo":"45"}', NULL, 0, '2021-11-09 19:11:50', NULL, 1, 29, NULL ); INSERT INTO `db`.`table` VALUES ( 39741635, 49970365, 0, 30, '{"CustomerName":"A","CustomerEmail":"[email protected]","CustomerMobile":"9","VersionId":"6","InquirySourceId":"1","Eagerness":"-1","IsCorporate":"z","CampaignId":"8","BranchId":"3","ApplicationId":"1","Location":{"City":{"CityId":"1"},"Area":{"AreaId":"4"}},"CouponCode":null,"CwOfferId":"0","AssignedDealerId":"0","PinCode":""}', NULL, 0, '2021-11-09 19:11:51', NULL, 1, 29, NULL ); この目標をどのように達成できますか?

Admin

特定の文字を1対1に変換して、一部の文字を変更せずに他の文字を同じターゲット文字に置き換える方法は?
text-processing
sed
tr

特定の文字を1対1に変換して、一部の文字を変更せずに他の文字を同じターゲット文字に置き換える方法は?

次のファイルがありますfile.txt。 MAL TIRRUEZF CR MAL RKZYIOL EX MAL OIY UAE RICF "MAL ACWALRM DYEUPLFWL CR ME DYEU MAIM UL IZL RKZZEKYFLF GH OHRMLZH" 文字を次のように変更したいと思います。 M = T A = H L = E C = O R = F E = I X = S (Any other letter) = _ (Anything else) = (itself) 固定文字のオーバーライドがあります。 tr MALCREX THEOFIS < file.txt または: sed 'y/MALCREX/THEOFIS/' < file.txt しかし、私が言及した最後の2つの規則をどのように実施できますか?

Admin

sedを使用してさまざまな数字やその他の文字を一致させる
sed
regular-expression

sedを使用してさまざまな数字やその他の文字を一致させる

sed私はPerlのような正規表現を書く傾向があります。 [\d-_]+ たとえば、数字、ダッシュ、アンダースコアを一致させます。それは魅力のように動作しますgrep。 $もっとsed_example.txt 一部 2021-04-21_08-45_file その他2021-04-21_08-15_test など。 $ grep -P "[\d-_]+" sed_example.txt 何2021-04-21_08-45_文書 その他2021-04-21_08-15_テスト 私はsedで同じことをしたいのですが、拡張式(-r)としても使用できず、範囲(たとえばor)を他の文字と\d組み合わせることができないか、少なくとも方法を見つけることができませんでした。 1つの解決策はすべての数字を明示的にリストすることですが、あまりにも怠惰です。[0-9][[:digits:]] どんな助けでも大変感謝します!

Admin

sedを使用して同じ文字列入力に基づいてすべてのパターンを一致させる方法
sed
regular-expression

sedを使用して同じ文字列入力に基づいてすべてのパターンを一致させる方法

文字列がadajuikodlobauvk01あるadajuikoplobauvk01 これら2つの文字列の違いは次dのとおりです。p 文字列がまたはadajuikodlobauvk01の場合、adajuikoplobauvk01予想される出力は次のようになります。adajuiko 最初の文字列のコードは正常に動作します。 echo adajuikodlobauvk01 | sed -e 's/\([a-z]*\)d.*/\1/g' -e 's/\([a-z]*\)p.*/\1/g' adajuiko 2番目の文字列の場合、出力は予想とは異なります。 echo adajuikoplobauvk01 | sed -e 's/\([a-z]*\)d.*/\1/g' -e 's/\([a-z]*\)p.*/\1/g' a 同じ文字列の与えられた入力に基づいてあらゆる種類のパターンを一致させるのに役立ちます。

Admin

sedがgrep(およびsedとawk)のロケール照合ファイルで定義された操作を実行しないのはなぜですか?
awk
sed
grep
sort
unicode

sedがgrep(およびsedとawk)のロケール照合ファイルで定義された操作を実行しないのはなぜですか?

すべての(印刷可能な)ASCII文字を含むファイルがあります。 $ printf '%b' "$(printf '\\U%x\n' {32..126})" > file 並べ替えることができます(長い出力を1行に減らすにはtrを使用してください)。 $ sort file | tr -d '\n' !"#%&'()*+,-./:;<=>?@[\]^_`{|}~$0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ en_US.utf8ロケールを使用するDebianバスターシステムに表示される照合順序(個々の文字の場合)は、最初に句読点、数字、大文字と小文字の混合順序です。つまり、aAbB、小文字、大文字が一緒に使用されます。 これが正確で、ユーザー(私)が整理したい場合であるとしましょう。 ただし、同じシステムでは、他の変更なしに次のことが発生します。 $ grep '[a-z]' file | tr -d '\n' abcdefghijklmnopqrstuvwxyz つまり、範囲はa-z何かによって小文字のASCII文字に変換されます。 翻訳は誰が行い、どのように制御または変更できますか? 私は小文字が何であるか、[az]が何を意味するのか、または誰かがそれが何を意味するのかを尋ねません。 [a-z]この範囲は、で始まり、で終わる範囲であると予想されます。az ソート順に。 [a-z]一部の他のユーザーは、すべてのロケールで意味が「小文字」と同じであることを知っています。私はおそらく基本的に「これと一緒に暮らす」でしょう。 しかし、必要に応じてこれをどのように制御および/または変更できますか?交換可能なハンドルはどこにありますか? いいえ、照合ファイルを変更しても役に立ちません。それ以上のものがあり、[a-z]すべてのロケールで常にASCII小文字を意味しなければならないという個人的な意見を強要します。

Admin

複数のシーケンスを掛けてテキストファイルに新しい列を追加するには?
shell-script
awk
sed

複数のシーケンスを掛けてテキストファイルに新しい列を追加するには?

4つの列と300行のテキストファイルがあります。 100番目の行が1 * 0.02、2 * 0.02 ...の積になり、100番目の行が2.2、2.4 ...になる5番目の列を追加したいと思います。 0.02 0.04 . . . 2 (in 100 lines) 2.2 2.4 . . . 12 (in 300 lines) 私のテキストファイル: # "Frame" "Timestep" "WignerSeitz.interstitial_count" "WignerSeitz.vacancy_count" 0 0 0 0 1 100 0 0 2 200 0 0 3 300 0 0 . . 98 9800 16 16 99 9900 16 16 100 10000 15 15 . . 299 29900 48 48 300 30000 55 55 予想出力: # "Frame" "Timestep" "WignerSeitz.interstitial_count" "WignerSeitz.vacancy_count" 0 0 0 0 0 1 100 0 0 0.02 2 200 0 0 0.04 3 300 0 0 0.06 . . 98 9800 16 16 1.96 99 9900 16 16 1.98 100 10000 15 15 2 . . 299 29900 48 48 11.8 300 30000 55 55 12

Admin

Bashはその行のすべての内容を返し、行を空白のままにします。
text-processing
sed
command-line
command

Bashはその行のすべての内容を返し、行を空白のままにします。

テキストファイルを変更したいです。 22行にテキストがあり、22行を空白のままにして、22行のテキストを23行に移動したいとしましょう。これを説明するために()に変更したいと思いますprintf 'Some %d text\n' {1..23}。 Some 1 text Some 2 text Some 3 text Some 4 text Some 5 text Some 6 text Some 7 text Some 8 text Some 9 text Some 10 text Some 11 text Some 12 text Some 13 text Some 14 text Some 15 text Some 16 text Some 17 text Some 18 text Some 19 text Some 20 text Some 21 text Some 22 text Some 23 text 以下を入力してください: Some 1 text Some 2 text Some 3 text Some 4 text Some 5 text Some 6 text Some 7 text Some 8 text Some 9 text Some 10 text Some 11 text Some 12 text Some 13 text Some 14 text Some 15 text Some 16 text Some 17 text Some 18 text Some 19 text Some 20 text Some 21 text Some 22 text Some 23 text どうすればいいですか?

Admin

入力ファイルで複数のコマンドを実行し、それを新しい出力ファイルに文字列で囲む方法
shell-script
awk
sed
csv
string

入力ファイルで複数のコマンドを実行し、それを新しい出力ファイルに文字列で囲む方法

input.txtファイルから複数のコマンドを順番に実行し、新しい.csvファイルに出力したいと思います。すべてのコマンドは個別に実行されると正常に実行されますが、{&&または;として実行すると何も起こりません。 } 私のコマンドは次のとおりです。 cat input_file.txt > output_file.csv awk 'NR % 13 == 0' sed -i '1i id,surface area (mm^2),gray matter volume (mm^3),avg cortical thickness +-sd,mean curvature,gaussian curvature,folding index,curvature index,hemi,ROI' awk -F"/" '$1=$1' OFS="\t" sed -e 's/\s\+/,/g' awk '{ print $10 " " $0}' >> output_file.csv これらすべてのコマンドを実行し、前のコマンドの後に各コマンドを実行する方法を知っている人はいますか? とても感謝しています!

Admin

ファイル内で行を回転させます。一番上の行を一番下に移動して日付を追加します。
shell-script
awk
sed

ファイル内で行を回転させます。一番上の行を一番下に移動して日付を追加します。

スクリプトで変更したいリストがあります。スクリプトを実行するたびに回転リストを取得できるように、一番上の項目を一番下に移動したいと思います。また、一番下に移動した行に日付を追加したいと思います。したがって。最上位フォルダは、rclone を使用して以前のバックアップを保存するためにも使用されます。 old1 old2 old3 これに関して old2 old3 old1 date time 使用しようとしたコードが見つかりましたが、上部アイテムが移動せずに下部にコピーするだけで、次のような出力が得られます。 old1 old2 old3 old1 date time old1 date time 私が試したコード# Rotate the BACKUPLIST-file, deleting the top entry and adding a new entry at the bottom OLDEST=$(head -1 $BACKUPLIST | sed 's/ .*//') # The oldest, extra backup-version COUNT=$(cat $BACKUPLIST | wc -l) # Number of files in list ((COUNT=$COUNT-1)) tail -$COUNT $BACKUPLIST > $BACKUPLIST.tmp echo $OLDEST $(date) >> $BACKUPLIST.tmp # Add a new line to the bottom, including today's date

Admin

リクエスト:転送するときは、ファイルの末尾に{number}を追加してください
sed
terminal
command
file-copy

リクエスト:転送するときは、ファイルの末尾に{number}を追加してください

何千ものディレクトリがあり、各ディレクトリにはfile.jpg名前付きファイルがあるサブディレクトリがあります。各サブディレクトリには名前付きファイルがあるため、file.jpgこれらのファイルをすべて同じフォルダに転送することはできません。それとも、最後のファイル(1つ)までお互いを覆うだけです。file.jpg残りました。 代わりに、次のことを行うためにいくつかのコマンドを端末に貼り付けたいと思います。 レビューフォルダにコピーしたら、{number}内容別に追加してください。file.jpg注:何千ものファイルがある可能性があるため、停止する場所に制限はありません。file34634657.jpgたとえば、最後のファイルは 。 file{number}.jpg追加の質問:コピーを元のディレクトリ/サブディレクトリに再追跡する方法はありますか?これらのfile.jpgディレクトリには、確認する必要がある追加のサブディレクトリとファイルが含まれています。

Admin