最新記事

2行目から始めて3行ごとにグループ化し、結合された2行目と3行目から最初の列を削除します。
linux
bash
sed

2行目から始めて3行ごとにグループ化し、結合された2行目と3行目から最初の列を削除します。

私はUNIXとコーディング全体に初めて触れ、長い間この問題を解決しようとしましたが、成功しませんでした。私はこれが非常に簡単な解決策であると確信していますが、誰かが私を正しい方向に導くことができれば役に立ちます。 次の形式のデータを含むSummary.txtファイルがあります。 Name criteria1 2 3 4 5 6 7 8 9 10 Sample12345 w x y z Sample12345.avg l m n Sample12345.stdn o p q Sample98765 w2 x2 y2 z2 Sample98765.avg l2 m2 n2 Sample98765.stdn o2 p2 q2 その他など 同じサンプル番号を持つ3行を組み合わせて名前だけを保持したいと思います。 Name criteria1 2 3 4 5 6 7 8 9 10 Sample12345 w x y z l m n o p q Sample98765 w2 x2 y2 z2 l2 m2 n2 o2 p2 q2 その他など たとえば、sedを使用してみました(最初にSample12345.avg Sample12345.stdnなどを含むSummary_temp.txtを作成した後)。 for i in `cat Summary_temp.txt`; do sed 's/\n$i//g' Summary.txt; done "-bash:予期しないトークン 'sed'の近くに構文エラーが発生しました。" 私もこの道に行こうとしました。 paste -sd ' ' Summary.txt | sed 's/\t/\n/g10; s/\t/@/g; s/\n/\t/g' | sed 's/.\nSample.*.avg//g' | head 私が得た最も近いものは次のとおりです。 cat Summary.txt | sed 's/ *| */,/g;/^$/d' | paste -d, - - - | head しかし、これは最初の行から始まるので、すべてがマイナス1です。 Name criteria1 2 3 4 5 6 7 8 9 10 Sample12345 w x y z Sample12345.avg l m n Sample12345.stdn o p q Sample98765 w2 x2 y2 z2 Sample98765.avg l2 m2 n2 Sample98765.stdn o2 p2 q2 ETC ETC head -1 Summary.txt > Summary_temp_3.txt 後でもう一度追加できるようにしてみました。 sed '1d' Summary.txt > Summary_temp_4.txt cat Summary_temp_4.txt | sed 's/ *| */,/g;/^$/d' | paste -d, - - - | sed 's/,.*_by_name//g | head これはまったく何も表示しません。最終的にctrl-Cを押す必要があるので、それは時間がかからないので、それが間違っていると仮定します。助けてください。私は初心者であり、これはおそらく簡単に解決できる愚かな問題であることを知っていますが、さらに何を試すべきかわかりません。

Admin

Linux Sedカット|
linux
sed

Linux Sedカット|

実際、ファイルはbmb/case.bmbと同じです。 bmx/eng/case.bmx などの出力が必要です。 次のコマンドを使用しています $ sed "s/bmb/bmx\/eng/g" bmx/eng/case.bmx/eng /eng//またはコマンドから削除したいコマンドを追加して助けることができますか?awkcuttrim

Admin

同じパターンが表示されるまで交差する線を接続する方法
sed

同じパターンが表示されるまで交差する線を接続する方法

ファイルがあります: "p1"data "p2"data "p3"data "p1"data "p2"data "p3"data "p2"data "p3"data "p1"data 次の「p1」が表示されるまで、すべての行を「p1」にリンクしたいと思います。 "p1"data"p2"data"p3"data "p1"data"p2"data"p3"data"p2"data"p3"data "p1"data 引用は文字通りの引用です。数千行の「p2」および「p3」入力ファイルセットが1〜10個ある場合があります。出力ファイルの長さは約600行でなければなりません。 試してみましたsed -e'/^"p1/N;s/\n//'が、何度も実行する必要があり、最終的に「p1」を他の「p1」と関連付けました。 どんな助けでも大変感謝します。ちなみに、このファイルはXMLファイルからのものです。 XMLツールがあることを知っていますがsed。

Admin

大文字の行のみを小文字に変換
text-processing
sed

大文字の行のみを小文字に変換

たとえば、次のような場合があるとします。 One, Two. OnE, Two. ONE, TWO. すべての大文字の行を小文字に置き換えたいので、次のような結果を得ます。 One, Two. OnE, Two. one, two. 努力しています: gsed '/[a-z]/!c\L&' 行と正確に一致しますが、L&に置き換えられます。 One, Two. OnE, Two. L& どのように小文字に変換できますか? Lの前にバックスラッシュを2〜3個試しましたが、出力にのみ表示されます。 より良いオプションがある場合は、awk、tr、または他のユーティリティを使用します。 また、バージョンが重要な場合: gsed --version gsed (GNU sed) 4.9

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

パスを修正
bash
text-processing
sed

パスを修正

$var変数()に格納されているパスを変更してこれを実行しようとしていますsed。実際、$(dirname "$var")スクリプトの目的に関連した理由で置き換えを行う必要があります。 これの例は、交換するパスが複数含まれている場合varです。パスは任意の場所にあります(1つは行の真ん中近く、もう1つは行の先頭など)。以下に例を示します。var=/dir/dir xyz/file.txtfilenamefilename dog foo/bar /dir/dir xyz/file.txt a b c d /dir/dir xyz/file.txt x y z /dir/dir xyz/file.txt 1234 {[(/dir/dir xyz/file.txt 私が望むもの dog foo/bar . a b c d . x y z . 1234 {[(. 私は次を試しました sed "s|"$(dirname "$var")"|.|g" "$filename" 得るsed: -e expression #1, char 31: unterminated `s' command 助けてください?もちろん、これに加えて他の方法を提案することもできますsed。

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

RichのPOSIXシェルのヒント - sedコマンドで$をエスケープするのはなぜですか?
shell
sed
posix

RichのPOSIXシェルのヒント - sedコマンドで$をエスケープするのはなぜですか?

sedETAラボに表示されている命令を理解しようとしています。Richのsh(POSIXシェル)トリックページ、特にヒントシェルは任意の文字列を引用します。: quote () { printf %s\\n "$1" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/'/" ; } sed3番目のコマンド()では、1番目のコマンドは、\$s/\$/'/シェル$がそれを仮定された変数として解釈できないようにエスケープされ、次のように渡され、正しく解釈されることができること$sを理解しています。sed最後の行コマンドのアドレスsですが、なぜ2番目のコマンドをエスケープするのですか$?行末と正確に一致してはいけませんか?

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

Find と sed は出力を返しません。
bash
sed
find

Find と sed は出力を返しません。

ディレクトリを検索していますが、私の場合は最後のディレクトリのみが返されますxyz。その後、sedを使用してそのディレクトリ内の他のすべての拡張を置き換えることでこれを達成したいと思います。 私が試したこと: find **/macml/xyz -maxdepth 1 -not -path '*__*' -type d #Returns the following macml/xyz その後、sedと組み合わせます。 find **/macml/xyz -maxdepth 1 -not -path '*__*' -type d -exec sed -E "s|^[macml\/]*||g" {} \+ & 何も返しません。 予想出力: xyz

Admin

Linux端末の「最後の列」にゼロを含む行を削除する方法は?
linux
awk
sed
terminal

Linux端末の「最後の列」にゼロを含む行を削除する方法は?

"0".tsv最後の列の値が複数のファイルにある場合(すべてのファイルの最後の列番号が同じでない可能性がある)、行を削除する方法を知りたいです。列の総数はファイルごとに大きく異なります。 awk正確に言えば、orの中にある行を探していますsed。 これはファイルの最初の数行と列であり.tsv、最後の列は"0"削除する必要がある列です。ただし、最後の列番号はすべてのファイルに対して同じではありません。 $cut -f1-10 temp_13jLiC.bed | awk '{c=0;for(i=4;i<=NF;++i){c+=$i};print $0, "", c}' | head -n 10 | sed 's/ /\t/g' chr1 0 100 . . . . . . . 0 chr1 100 200 . . . . . . . 0 chr1 200 300 . . . . . . . 0 chr1 300 400 . . . . . . . 0 chr1 400 500 . . . . . . . 0 chr1 500 600 . . . . . . . 0 chr1 600 700 . . . . . . . 0 chr1 700 800 . . . . . . . 0 chr1 800 900 . . . . . . . 0 chr1 900 1000 . . . . . . . 0

Admin