タグ付けされた質問 「sed」

sedは、テキストをフィルタリングおよび変換するためのコマンドラインストリームエディターです。

8
行の残りのGrep…試合後
次の構造を持つ2行のみを含むファイルがあります。 $ cat /tmp/pwpower.log 000D6F0000D34227, -114.10 000D6F0001A405C4, -130.09 値は私の太陽光発電所の電力値です。負の値は生成を意味します。 私はgrep / sed / awkを介して抽出された値が必要です-最も賢い方法は何でも。両方の値を別々に、マイナス記号なしで抽出する必要があります。 私が今やっているのはちょっとばかげていますが、うまくいきます。多くの人が私にとってより賢い方法を持っていると確信しています:-)もちろん、ここでは値とマイナスのみを表示しています。 最初の値を取得するには: cat /tmp/pwpower.log |grep -o "\-.*" | head -n 1 2番目の値を取得するには: cat /tmp/pwpower.log |grep -o "\-.*" | tail -n1 そして関連する質問、これらのSTRINGを取得して変換してSUMを計算できるようにする簡単な方法はありますか?

3
Linuxで最速の `uniq`ツール
大きなテキストファイル(1.5 G)があります。 Linuxで最も高速で信頼性の高いツールを教えてください。 私は通常使用します: awk '!x[$0]++' file.txt しかし、htopコマンドを使用すると、メモリ使用量が増加していることがわかります。 巨大なファイルで最も速くて信頼性の高いものを知りたい。 uniq? sort? sed? awk? どうして?
8 sed  awk  memory  sort  uniq 

3
文字列内の特定の文字を削除する方法はLinuxでその行に数字がない場合のみ
私はこの一見修正が簡単な問題に困惑してきました...まあ、しばらくの間。 編集する必要があるファイルからの出力例を次に示します。 $cat file George Washington Geneva Convention 123,281,029 USD 342,019,929 EUR 「George Washington」と「Geneva Convention」の間のスペースを削除する必要がありますが、「123,281,029 USD」または「342,019,929 EUR」の間のスペースは削除しないでください。 基本的に、ここでの目標は、行に数字がない場合にのみ、行の単語間のスペースを削除することです。 私はを介してファイルを編集しようとしましたgrep -v [0-9] $file | sed 's/ //'が、それが機能する唯一の方法は、別のファイルに出力する場合ですが、それは古いファイルから新しいファイルへの番号のあるすべての行を除外することを意味します。 私はgrepを使ってかなりばかげたループをいくつか試しましたsedが、何も正しく動作しないようです。 ここでも、ファイルの出力例を示します。 $cat file George Washington Geneva Convention 123,281,029 USD 342,019,929 EUR これが私の望ましい出力です: $cat file GeorgeWashington GenevaConvention 123,281,029 USD 342,019,929 EUR
8 centos  sed  string  replace 


7
`sed`を使用して正確な文字列を一致させる方法は?しかし、その一部ではありません。
以下のような入力ファイルFILE1.TXTがあります。 11 id1 12 13 AGE = 20 14 NAME = NAME1 15 16 id2 17 18 AGE = 30 19 NAME = NAME2 . . . 110 idXYZ 111 112 AGE = AGEXYZ 113 NAME = NAMEXYZ 114 115 idZZZ 116 特定のIDに属するすべてのフィールドを検索して、NAMEの値を取得したい 各IDをループ処理して、必要に応じて各IDに対して以下のコマンドを作成しました。 sed -n '/11/,/14/p' FILE1.TXT | grep …
8 sed  string  patterns 

5
一致がn回出現した後の行を出力する
次のファイルの4598行目を表示しようとしています。事実上、一致がn回出現した後に行を表示したい。この場合、の3番目の出現後の行<Car>。これについてどうすればよいですか? <Car> 10456 </Car> <Car> 70192 </Car> <Car> 4598 </Car>

6
ファイル内の段落の順序を逆にする
段落内のテキスト(テキストが1つ以上の空行で区切られている行)を含むファイルがあります。できればsedを使用して、段落の順序を逆にしたい(つまり、最後の段落が最初になる...)。 私は、段落のファイルに対して行われるsedコマンドtac、行のファイルに対して行われるものを探しています。

3
sedで尾をエミュレートする
私は(バイナリの限られた数のミニシステムを持ってbash、cp、cat、sed...、)。tailコマンドがないので、テール機能をエミュレートできるかどうか疑問に思っていますsed cat foo.txt | tail -n 10 sed cat foo.txt | sed -n '1,10p'で1行目から10行目までを印刷できることはわかっていますが、最後の10行をどのように印刷しますか?
8 bash  sed 

3
1行から区切り文字なしの固定幅レコードを抽出する
区切り文字のない非常に長い1行のテキストを含む単一のファイルからテキストの文字列を抽出する必要があります。以下のサンプル行を使用すると、これらは以下の既知の事実です。 ??????? A1XXXXXXXXXX ??????? B1XXXX ?????? A1XXXXXXXXXX ?????? C1XXXXXXX 1. It contains 38 fixed width record types 2. The record marker is a 7 alphanumeric character followed by, for example, ‘A1’. 3. Each record type has varying widths, for example, A1 record type will have 10 characters following it, if …

2
試合と試合の前の1行をgrep
zzzzzzzzz aaaaaaaaa bbbbbbbbb & ccccccccc & ddddddddd hhhhhhhhh eeeeeeeee fffffffff & ggggggggg & 上記の行で、私が欲しいのはgrep/ sed/ awk(どのメソッドでもかまいません)&記号とその上に1行追加された行です。たとえば、必要な出力は次のようになります。 aaaaaaaaa bbbbbbbbb & ccccccccc & eeeeeeeee fffffffff & ggggggggg & 以下は私が運なしで試したことです。 egrep "&" | -b 1 file.txt


2
sedのいくつかのパターンに一致する行のみを置き換える方法は?
$ echo -e 'CH12\nCH23au' | sed '/^CH/s=^=<b>=' <b>CH12 <b>CH23au CHbyで始まる行を照合できることはわかって^CHいますが、どのようにして複数のパターンを照合できますか? 例: 入力: CH12 CH23au 出力: CH12 <b>CH23au どのようにのみ配置する<b>がある場合^CHやauラインに?
8 sed 

4
SEDまたはAWKを使用して、テンプレートファイルのプレースホルダーを、特殊文字を含む可変コンテンツに置き換えるにはどうすればよいですか?
CentOS 6.3 (内部レポートの目的で)本文に電子メールヘッダーのコピーを含む電子メールを送信する小さなスクリプトを取得しようとしています。 テンプレートファイルには以下が含まれます。 Alert Report Alert has triggered at TMPDATE HEADERS ------- TMPHEADERS SOURCE IP --------- TMPSOURCEIP スクリプトで「TMP」プレースホルダーを見つけて、アラートに関連する実際の情報に置き換えたい。 日付およびソースIP変数は正常に機能しているようですが、TMPHEADERSを検索または置換しようとすると、出力全体が空白になるなど、奇妙な症状が発生します。多くの特殊文字(@%&など)を含むヘッダーに関係していることは、かなり確実です。 誰かがこれをbash経由で達成するための最善の方法についてアドバイスできますか? 私の現在のコードは次のようになります: cat /test/emailtemplate | sed s/TMPHEADERS/"$HEADERS"/ > /test/output 更新 リクエストに応じて、テンプレートファイルに挿入しようとしている一連のヘッダーの例を次に示します(無害なIPアドレスを保護するためにIPアドレスと電子メールアドレスが変更されました:-))。 From foo@yahoo.com Thu Apr 25 20:18:19 2013 Return-Path: <foo@yahoo.com> Received: from nm30-vm0.bullet.mail.ne1.yahoo.com (nm30-vm0.bullet.mail.ne1.yahoo.com [98.138.11.36]) by serv.example.com (8.14.4/8.14.4) with ESMTP …

5
コマンドラインからすべての行の最初と最後の文字を削除する
テキストファイルのすべての行の最初と最後の文字を削除して、切り捨てられたバージョンを新しいファイルに保存しようとしています。awk特に誰かが大きなファイルのために効率的に使用したり、他のLinuxプログラム/コマンドを実行したりする方法について誰かが知っていますか? input.txt (s,2,4,5,6) "s,1,5,5,2" {z,0,4,5,3} [y,2,4,5,5] (y,4,4,5,7) (r,20,4,5,7) (e,9,4,5,2) 予想されるoutput.txt s,2,4,5,6 s,1,5,5,2 z,0,4,5,3 y,2,4,5,5 y,4,4,5,79 r,20,4,5,7 e,9,4,5,2

7
パターンの最初と最後の出現の間のすべての行を取得するにはどうすればよいですか?
最初に出現するパターンfooから最後に出現するパターンまでの範囲の行のみを取得するように、ファイル(適切な入力ストリーム)をトリミングするにはどうすればよいbarですか? たとえば、次の入力を考えます。 A line like foo this foo bar something something else foo bar and the rest 私はこの出力を期待します: foo this foo bar something something else foo bar

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.