最新記事

「sed」を使用してTSVファイルのフィールドの末尾にテキストを挿入する
text-processing
sed
bioinformatics

「sed」を使用してTSVファイルのフィールドの末尾にテキストを挿入する

sedワイルドカード式を含むコマンドを使用してTSVファイルに文字を挿入したいと思います。 次のファイルがあります。 Marker Pvalue Trait Chr Pos S3_16887238 6.172847e-09 Total_Soil_S 3 16887238 S3_16887238 6.172847e-09 Total_Soil_Pa 3 16887238 S3_16887238 6.172847e-09 Total_Soil_Cl 3 16887238 _All3番目の列のすべてのテキストの末尾に次の内容を追加したいと思います。 Marker Pvalue Trait Chr Pos S3_16887238 6.172847e-09 Total_Soil_S_All 3 16887238 S3_16887238 6.172847e-09 Total_Soil_Pa_All 3 16887238 S3_16887238 6.172847e-09 Total_Soil_Cl_All 3 16887238 このコマンドを使用していますが、動作しません。 sed -i 's/Total_Soil_\(.*\)/&_\1_All/g' top1.txt Sこれはサンプルファイルなので、およびをPa置き換えることができますCl。

Admin

sed正規表現は、パターンを含む段落全体をキャプチャできません。
text-processing
sed
regular-expression
xml

sed正規表現は、パターンを含む段落全体をキャプチャできません。

このXMLファイルがあります(例)。 私のLinuxディストリビューション(sed(GNU sed)4.2.2)に付属のインストールを使用して、次の正規sed表現を使用してこのファイルを検索します。 sed -En 'N;s/\<(This.*2020.*[\s\S\n]*?)\>/\1/gp' test2.txt ただし、次の文字列のみをキャプチャします。 私がここで何を間違っているのか?

Admin

sedを使用して特定の行に変数を追加する
sed

sedを使用して特定の行に変数を追加する

ループ内の変数の値を最初の行に追加しようとするので、繰り返すたびに行が増えます。頑張ってる sed -i '1s/.*/& $(echo "T$(echo "$j-3" | bc -l)_S$k")/' T_iSlicesExtraction_2.csv だから最初の行に$(echo "T $(echo "$ j-3" | bc -l)_S $ k")の値を追加してみました。しかし、他の特殊文字を「スキャン」するのに苦労しており、これに対して少し迷っています。 $を脱出するために\を使ってみましたが、運がありませんでした。

Admin

ファイルを1行ずつマージ
text-processing
sed

ファイルを1行ずつマージ

10個のファイルがあり、各ファイルの最初の行、各ファイルの2番目の行などを1つの大きなファイルにコピーしたいと思います。 ファイル1.txtは A B C D ファイル2.txtは E F G H file3.txtは I J K L ありますように A E I B F J C G K .... ありがとう

Admin

パターンで始まる行を選択的に連結する方法 [重複]
shell-script
text-processing
awk
sed
join

パターンで始まる行を選択的に連結する方法 [重複]

この質問にはすでに答えがあります。: sedを使用してパターン付きの行を次の行にリンクするには? (回答4個) 閉鎖3年前。 この記事は次のように表示されます。前の記事のフォローアップ。 入力ファイルは次のとおりです。 module ABC x(a,b,c) module DEFG y(d,e,f, g,h,i) module HIJKL z(j,k,l) 出力ファイルは次のようにする必要があります。 module ABC x(a,b,c) module DEFG y(d,e,f, g,h,i) module HIJKL z(j,k,l) 提供されたソリューションでアスタリスクをワイルドカードとして使用してみました。メモ投稿しかし、期待どおりに動作しません。 付録 綿密に調査した結果、これらのソリューションが実際に初期の作業にも役立つことがわかりました(@steeldriverが指摘したように)。問題は、ファイルがDOS / Windowsプラットフォームで作成され、^M予期しない文字が出力に挿入され、後続の処理がめちゃくちゃになることです。これで入力ファイルに対してdos2unixを実行しましたが、問題は消えました(つまり、以前のソリューションも私にとって効果的でした)。 重複しているため、この投稿を閉じることをお勧めします。

Admin

文字列を一致させ、1行を前の行に移動します。
text-processing
awk
sed

文字列を一致させ、1行を前の行に移動します。

この情報が繰り返される大容量ファイルがあります。残念ながら、固定端末を使用してファイルをラップします。何でも一致させて172上の行に移動する必要があります。 wsmith 623456256 6-meg 172.16.15.198 pppoe 出力は次のようになります。 wsmith 623456256 6-meg 172.16.15.198 pppoe ファイルにフォーマットが正しくない他の行があるため、awkは使用できず、単に2行目を移動します。

Admin

sedを実行すると、「一致項目の検索中に予期しないEOF」エラーが発生します。
bash
sed
sudo
su

sedを実行すると、「一致項目の検索中に予期しないEOF」エラーが発生します。

それが問題だ。 「root」ユーザーとして「myusername」ユーザーとしてコマンドを実行しようとしています。 だから私はsu - $USERNAME -c The自体を次のように使用します。sudo sed -i 's|SEARCH_REGEX|REPLACEMENT|' /etc/cloud/cloud.cfg REPLACEMENTただし、スクリプトを実行するたびに、その部分によって引き起こされると思われるエラーが発生します。 キャリッジリターンや空白についてだと思います。 コードは次のとおりです。 #!/bin/bash $USERNAME="myusername" $USERPWD="p@ssw0rd123" PATTERN='s|preserve_hostname:\sfalse|preserve_hostname: true\nmanage_etc_hosts: false|' su - $USERNAME -c 'sudo -S bash -c "sed -i '$PATTERN' /etc/cloud/cloud.cfg"' <<< $USERPWD 私が得るエラーは次のとおりです。 true\nmanage_etc_hosts:: -c: line 0: unexpected EOF while looking for matching `"' true\nmanage_etc_hosts:: -c: line 1: syntax error: unexpected end of file 私に役立つ資料: https://linuxize.com/post/how-to-use-sed-to-find-and-replace-string-in-files/ https://linuxhint.com/50_sed_command_examples/ 私は何が間違っていましたか?

Admin

Bashの文字列に一致する行の並べ替え
bash
shell-script
text-processing
sed

Bashの文字列に一致する行の並べ替え

前のコマンドの出力は次のとおりです。 foo 1 some-string P another-string bar 5 and-another-string P別の行を順番に維持しながら、前/後に1つ以上のスペースを含むすべての行を一番上に移動したいと思います。たとえば、次のようになります。 P another-string foo 1 some-string bar 5 and-another-string 行数が不明です。可能であれば、通常のbashまたはsed。

Admin

Bash:条件に応じて中括弧を削除
bash
sed
regular-expression

Bash:条件に応じて中括弧を削除

以下の文字列から中括弧を削除したいが、中 * 括弧がその間にある場合にのみ可能です。 このトピックには多くの回答がありましたが、私のシナリオでは条件を満たす中括弧だけを削除したいと思います{*} --> *。 name,apple,price,{50 70 80 80},color,{*} name,orange,price,{*},color,{80 30 40} 予想出力: name,apple,price,{50 70 80 80},color,* name,orange,price,*,color,{80 30 40} 助けてください。よろしくお願いします。

Admin

特定のテキストをインポートするには、sedコマンドを使用するのに役立ちます。
linux
sed

特定のテキストをインポートするには、sedコマンドを使用するのに役立ちます。

ジョブを生成したJIRAへのAPI呼び出しの出力であるtxtファイルがあります。 このファイルには次のテキストがあります(質問番号は変更可能です)。 "key":"JIRA-90" JIRA-90を入手する必要がありますが、sedを使用してこれを行う方法がわからないようです。 JIRA-90はもちろんJIRAの課題タイプなので変更されることがあります。

Admin

sed は yaml コードブロックを空のコードに置き換えます。
sed

sed は yaml コードブロックを空のコードに置き換えます。

sedを使用してyamlファイルからコードスニペットを削除しようとしています。これまで私が持っているのは以下のコードですが、うまくいきません。 sed -i 's/- node-service\/velocity_log_deployment((.|\n)*)//' config.yml 削除するコードは次のとおりです。 - terraform/init_and_plan: name: terraform_plan context: - phdv-docker-hub-creds - phdv-aws terraform_version: <> working_directory: ~/project/infra persist_to_workspace_filepath_prefix: infra/ requires: - package # remove start - node-service/velocity_log_deployment: name: velocity_log_deployment repository_url: https://github.com/pizzahutuk/lambda-contentful-menu-sync requires: - terraform_apply context: - phdv-docker-hub-creds - phdv-aws # remove end - terraform/init_and_apply: name: terraform_apply context: - phdv-docker-hub-creds - phdv-aws terraform_version: <> working_directory: ~/project/infra requires: - terraform_plan filters: branches: only: main sed置換後の結果: - terraform/init_and_plan: name: terraform_plan context: - phdv-docker-hub-creds - phdv-aws terraform_version: <> working_directory: ~/project/infra persist_to_workspace_filepath_prefix: infra/ requires: - package - terraform/init_and_apply: name: terraform_apply context: - phdv-docker-hub-creds - phdv-aws terraform_version: <> working_directory: ~/project/infra requires: - terraform_plan filters: branches: only: main

Admin