最新記事

日付条件についてはわかりません。
awk
sed
csv

日付条件についてはわかりません。

その人が過去1年以内に生まれていない場合は、person.csv(下)から行を削除しようとします。 データセット1: "Index","User Id","First Name","Last Name","Date of birth","Job Title" "1","9E39Bfc4fdcc44e","new, Diamond","Dudley","06 Dec 1945","Photographer" "3","32C079F2Bad7e6F","Ethan","Hanson","08 Mar 2014","Actuary" "2","aaaaaaa, bbbbbb","Grace","Huerta","21 Jan 2023","Visual merchandiser" したがって、予想される出力は次のようになります(最後の行は1年以内に削除されました)。 "Index","User Id","First Name","Last Name","Date of birth","Job Title" "1","9E39Bfc4fdcc44e","new, Diamond","Dudley","06 Dec 1945","Photographer" "3","32C079F2Bad7e6F","Ethan","Hanson","08 Mar 2014","Actuary" 私はawkを使って次のことをしようとしています。 awk -F , '{print $5 ....}' person.csv > output.csv ただし、各日付行を(今日から1年を引いた値)と比較する方法はわかりません。 データセット2:時には二重引用符で囲まれたフィールドに二重引用符があります(例:line1 field4)。 "Index","User Id","First Name","Last Name","Date of birth","Job Title" "1","9E39Bfc4fdcc44e","new, Diamond","Dudley (aka "dud")","03 Oct 2023","Photographer" "3","32C079F2Bad7e6F","Ethan","Hanson","03 Dec 2022","Actuary" "2","aaaaaaa, bbbbbb","Grace","Huerta","21 Jan 2023","Visual merchandiser" 「sed」がこれを行うことができれば、私もそれについて開いています。どんな助けでもお願いします。ありがとうございます!

Admin

Linuxファイルの最初の列を統合し、2番目の列に数字を追加します。
linux
text-processing
awk
sed

Linuxファイルの最初の列を統合し、2番目の列に数字を追加します。

複数のファイルからデータを収集し、単一の要約ファイルにダンプしています。 cat *files* | sort -u > final.rpt a 1 a 5 a 6 b 2 b 3 b 0 c 1 c 7 最初の列の文字列に基づいて一意化し、2番目の列の文字列に対応するすべての数値を合計するにはどうすればよいですか?上記の例で予想される出力は次のとおりです。 a 12 b 5 c 8

Admin

正規表現に基づいて複数行を連結します。
awk
text-formatting

正規表現に基づいて複数行を連結します。

次のようにpandocの出力をHTMLに変換しました。 foo bar

That's one small step for man, one giant leap for mankind A new line and another quote
baz 私はこれを次のようにしたいと思います: foo bar
That's one small step for man, one giant leap for mankind A new line and another quote
baz (ブロック引用符はとにかく個別にレンダリングされるため、追加の改行は必要ありません。) 私はsedで実験を始め、最終的に次のような結果を得ました。 '/./ {printf "%s%s", $0, ($1 ~ /^$/ && $2 ~ /<\/?blockquote>/) ? OFS : ORS}' 私が望むもののいくつかを実行しますが、修正方法を理解するにはあまりにも進歩したステップです。 つまり、私が望むルールは、次の行が空で、その後の行が一致する場合は、/<\/?blockquote>/現在の行、次の行、次の行を区切りなしで印刷して続行することです。

Admin

特定値から特定値へ grep
bash
awk
sed
grep

特定値から特定値へ grep

たとえば、データを含むファイルがあります。 [2023-03-21 12:27:19 +0000] some_data [2023-03-21 12:27:19 +0000] some_data [2023-03-22 12:27:19 +0000] some_data [2023-03-23 12:27:19 +0000] some_data [2023-03-23 12:27:19 +0000] some_data [2023-03-25 12:27:19 +0000] some_data [2023-03-26 12:27:19 +0000] some_data [2023-03-29 12:27:19 +0000] some_data [2023-03-29 12:27:19 +0000] some_data [2023-03-29 12:27:19 +0000] some_data [2023-03-29 12:27:19 +0000] some_data 次の値を含むすべての行をgrepしたいと思います。2023-03-22到着2023-03-26 だから私はそれに合わせて行きたいです。 [2023-03-22 12:27:19 +0000] some_data [2023-03-23 12:27:19 +0000] some_data [2023-03-23 12:27:19 +0000] some_data [2023-03-25 12:27:19 +0000] some_data [2023-03-26 12:27:19 +0000] some_data grep、sed、awkを使ってこれを行うにはどうすればよいですか? 別のケースがあります: データを含むファイルがあります。 [2023-03-21 00:45:20 +0000] some_data [2023-03-21 01:10:11 +0000] some_data [2023-03-21 02:04:56 +0000] some_data [2023-03-21 12:09:15 +0000] some_data ... ... in this part the lines with the next data with some_data ... ... [2023-03-23 21:40:19 +0000] some_data [2023-03-23 22:15:11 +0000] some_data [2023-03-23 23:40:06 +0000] some_data どのようにラインをgrepしますか?[2023-03-21 01:10:11 +0000]some_data[2023-03-23 22:15:11 +0000] Some_data おそらくgrepに-nフラグを使用できますか?文字列の数[2023-03-21 01:10:11 +0000]を取得し、-nフラグを使用して[2023-03-23 22:15:11 +0000]の値をgrepします。そのコマンドは私にこの行の行番号を返します。 行数がわかっている場合は、特定の行から特定の行まで、多数の日付をどのように取得できますか?

Admin

awkは配列インデックスを認識できません
awk
associative-array

awkは配列インデックスを認識できません

タブで区切られた2つのファイルがあり、それぞれ2つの列があります。 2つのファイルのうち1列に要素が重なるファイルを作成したいと思います。これを行うには、まずファイル1を配列に配置し、次に配列をスキャンしてファイル2に重複する部分があることを確認します。しかし、どういうわけか配列のインデックスは認識されません。問題の詳細な説明を以下に提供する。 ファイルの最初の3行は次のとおりです。 ファイル1: 90001 raw acceleration data 2634 Heavy DIY 1011 Light DIY ファイル2: 2634 218263 25680 44313 25681 44313 2つのファイルの列1に重複があることを示すには、次のようにします。 user@cluster:~> grep 90001 file2 90001 103662 user@cluster:~> grep 2634 file2 2634 218263 ファイル3を作成するために最初にこれを試しましたが、結果として空のファイルが作成されました。 awk 'BEGIN {FS = "\t"; OFS= "\t"} NR==FNR {a[$1]=$2; next} { if($1 in a) print $1, a[$1]}' file1 file2 > file3 else次のコードは、その行を追加すると実際にはfile2をfile3に印刷するため、配列のインデックスが認識されないという問題があることを確認します。 awk 'BEGIN {FS = "\t"; OFS= "\t"} NR==FNR {a[$1]=$2; next} {if($1 in a) print $1, a[$1] else print $1, $2}' file1 file2 > file3 混乱しています。この問題の原因と解決策を知りたいです。よろしくお願いします。

Admin

タブを使用するとsedに問題がありますか?代わりにawkを使用する必要がありますか?
linux
awk
sed
macos

タブを使用するとsedに問題がありますか?代わりにawkを使用する必要がありますか?

cat file.tsv| sed '1icolumn1 column2 column3 column4 ...' > file2.tsv 私はsedを使用して.tsvファイルに最初の行(タイトルタグ)を追加しています。タグはタブで区切る必要があります。私は文字列を区切るためにリテラルタブを使用してきました。 文字列を何度も確認しました。ところで、タグが欠落している問題が引き続き発生します。 たとえば、.を取得する代わりにcolumn1 column2 column3.で終わる場合が多いですcolumn1 column2column3。その後、修正しようとするとcolumn1column2 column3。 「\t」(成功しませんでしたが)を使用するなど、エラーが少ないタブを追加する他の方法はありますか?awkより良い選択ではないでしょうか?

Admin

awkはいくつかの行を自動的にコピーします。誰かがこれを説明できますか?
awk
duplicate

awkはいくつかの行を自動的にコピーします。誰かがこれを説明できますか?

私のデータは次のとおりです。 A 4 G 1 G 1 C 4 C 2 C 2 T 6 T 5 T 5 A 6 T 2 T 2 C 6 T 2 T 2 T 6 G 2 G 2 私はコマンドを試しています: awk -F " " '$1==$3 {$7=$6; print $0;} $1==$5 {$7=$4; print $0;} ($1 != $3 && $1 != $5) {$7=$2; print $0}' test.txt データには5行しかありませんが、出力には7行があり、一部の行はランダムに繰り返されます。 どういうわけか、これはこのデータセットでのみ発生し、私が持っている他のデータセットでは発生しません。誰でも助けることができますか?何が起こったのか理解できません。

Admin

Linuxでは、「/」記号で終わる前に、txt行に「db」という単語を含むtxtファイルから最初の単語を抽出します。
linux
awk
sed
grep

Linuxでは、「/」記号で終わる前に、txt行に「db」という単語を含むtxtファイルから最初の単語を抽出します。

2行を含むabc.txtファイルがあります。db特定の行の単語を含む行の最初の単語を抽出したいと思います。 abc.txt: XYZ/db_abc.sql ijkl/tables/table_name/tl_abc.sql grepを試すと、grep "db" abc.txt「db」を含む行が表示されますが、最初の単語を出力として抽出したいと思いますXYZ。 出力: $ grep "db" abc.txt XYZ/db_abc.sql 予想出力: XYZ 同様に、grepを試すとgrep "tl" abc.txt「tl」を含む行が表示されますが、3番目の単語を出力として抽出したいと思いますtable_name。 出力: $ grep "tl" abc.txt ijkl/tables/table_name/tl_abc.sql 予想出力: table_name

Admin

ubuntu / debianリポジトリにインストールされているすべてのパッケージを一覧表示する
debian
awk
repository

ubuntu / debianリポジトリにインストールされているすべてのパッケージを一覧表示する

すべてのパッケージを一覧表示する方法私はインストールしました外部コマンドを使用せずにUbuntu / Debianの一部のリポジトリで、またはaptitude同じ基本コマンドを使用するapt list --installedここ: 現在のリポジトリをすべて一覧表示します。 apt-cache policy | sed -n 's/.*o=\([^,]\+\).*/\1/p' | uniq そしてここ、 for p in $(dpkg -l | awk '/ii/{ print $2 }'); do for i in $(apt-cache policy "$p" | awk '/Installed/{ print $2}'); do apt-cache policy "$p" | grep -A1 '\*\*\*\ '$i'' | if grep -q jessie; then echo $p; fi; done; done 後者は解決策ではありません。なぜなら著者でもそれがそうだと認めるからだ。「とても醜い」しかし、基本的なツールのみを使用するアプローチは良いです。 それとも最善の方法は、いくつかのインストールログをawk解析するスクリプトを書くことですか?apt しかし、なぜ疑問に思うのですか?現在、私のリポジトリはすべて次のとおりです。 LP-PPA-myid,a=focal cloudsmith/myid/repo,a=bullseye Docker,a=bullseye Google LLC,a=stable Debian,a=oldstable Debian,a=testing Debian Backports,a=bullseye-backports Debian,a=stable-security Debian,a=stable しかし、なぜNodejsリポジトリがリストにないのかわかりません。 $ apt-cache policy nodejs nodejs: Installed: 16.18.1-deb-1nodesource1 Candidate: 16.19.0-deb-1nodesource1 Version table: 16.19.0-deb-1nodesource1 500 500 https://deb.nodesource.com/node_16.x bullseye/main amd64 Packages *** 16.18.1-deb-1nodesource1 100 100 /var/lib/dpkg/status 12.22.12~dfsg-1~deb11u1 500 500 http://security.debian.org/debian-security bullseye-security/main amd64 Packages 12.22.5~dfsg-2~11u1 500 500 http://deb.debian.org/debian bullseye/main amd64 Packages

Admin

サポート/広告リンクモードのethtool出力の比較
linux
awk

サポート/広告リンクモードのethtool出力の比較

私のカードのサポートレベルが高いことを確認するために、ethtoolの「サポートされているリンクモード:」と「広告されたリンクモード:」の出力をキャプチャしようとしていますが、スイッチ側ではサポートされていません。そのため、awkまたはsedを使用してパターンリストの出力をキャプチャしようとしていますが、比較できるようにその部分をキャプチャする方法はありません。どんなアイデアがありますか? ethtool em1 Settings for em1: Supported ports: [ FIBRE ] Supported link modes: 1000baseKX/Full 10000baseKR/Full 25000baseCR/Full 25000baseKR/Full 25000baseSR/Full Supported pause frame use: Symmetric Supports auto-negotiation: Yes Supported FEC modes: None BaseR Advertised link modes: 1000baseKX/Full 10000baseKR/Full 25000baseCR/Full 25000baseKR/Full 25000baseSR/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Advertised FEC modes: None Speed: 10000Mb/s Duplex: Full Port: FIBRE PHYAD: 0 Transceiver: internal Auto-negotiation: on Supports Wake-on: g Wake-on: d Current message level: 0x00000004 (4) link Link detected: yes 予想される結果は次のとおりです。 Supported link modes: 1000baseKX/Full 10000baseKR/Full 25000baseCR/Full 25000baseKR/Full 25000baseSR/Full Advertised link modes: 1000baseKX/Full 10000baseKR/Full 25000baseCR/Full 25000baseKR/Full 25000baseSR/Full この出力で行う計画は、サポートされているリンクよりも広告リンクが少ない場合、広告リンクをサポートされているリンクと比較することです。 これが私が思いついた解決策です。私はこれが改善できると確信しています: #!/bin/bash # Get the interface name iface=$1 # Get the supported link modes supported=$(ethtool $iface | awk '/Supported link modes:/{mode=$NF; getline; while(/[[:space:]]+[0-9]+/){mode=mode" "$NF;getline}} END{print mode}') # Get the advertised link modes advertised=$(ethtool $iface | awk '/Advertised link modes:/{mode=$NF; getline; while(/[[:space:]]+[0-9]+/){mode=mode" "$NF;getline}} END{print mode}') # Compare the supported and advertised link modes if [ "$supported" == "$advertised" ]; then echo "The supported and advertised link modes match." else echo "The supported and advertised link modes do not match." fi

Admin

4番目の列の条件が一致する場合は、3番目の列の値を印刷する必要があります。
linux
awk

4番目の列の条件が一致する場合は、3番目の列の値を印刷する必要があります。

cat Data.log REPLICAT RUNNING RPGUJ3 02:00:12 00:00:06 REPLICAT RUNNING RPGUJ4 00:00:10 00:00:06 REPLICAT RUNNING RPGUJ3_3 01:00:11 00:00:00 REPLICAT RUNNING RPGUJ4_3 00:00:12 00:00:06 4列から1時間以上の値を3列に印刷したいです。次のように出力します。 RPGUJ3 RPGUJ3_3 私は1つのファイルから列3と4の出力を取得しようとします。 cat Data.log | awk '{print $3 " " $4}' >1.out cat 1.out RPGUJ3 02:00:12 RPGUJ4 00:00:10 RPGUJ3_3 01:00:11 RPGUJ4_3 00:00:12 しかし印刷できません。 RPGUJ3 RPGUJ3_3

Admin