タグ付けされた質問 「text-processing」

プログラム、スクリプトなどによるテキストの操作または検査

3
その行または次の行に特定の文字列が含まれていない場合に行を印刷する方法
Input.txt: 8B0C remove 8B0D remove 8B0E remove 8B0F 8B10 remove 8B14 remove 8B15 remove 8B16 remove 8B17 remove 8AC0 8AC1 remove 8AC2 remove 8AC3 remove 8AE4 8AE5 8AE6 remove 望ましい出力: 8B0F 8AC0 8AE4 8AE5 その行または次の行に「削除」が含まれていない場合、その行を印刷したい。私はソラリス5.10、KSHを使用しています。

3
ファイル内の2つのマーカー間のテキストを別のファイルのテキストのセクションに置き換える方法は?
にテキストのブロックがあったとしましょう~/.bashrc: #~/.bashrc # ...some commands... # aliases alias suicide='sudo rm -rf /' # end aliases # other commands そのテキストブロックを別のファイルの2つのマーカーの間に含まれる他のテキストで置き換えたいと思います。 stuff-to-place-in-bashrc.txt # stuff-to-place-in-bashrc.txt # ...stuff... # aliases alias ldir='ls * -d' alias ithinklifeisworthliving='echo all good' # end aliases # ...more stuff... 私はもう試した sed -ne 's/# aliases\s+\(.*\)\s+# end aliases/\1/' stuff-to-place-in-bashrc.txt しかし、私はここで暗闇の中で本当に揺れています。誰かが私を助けてくれませんか? からテキストを抽出するにはどうすればよいstuff-to-place-in-bashrc.txtですか? …

4
異なるコマンドの入力を分割して結果を組み合わせる
異なるコマンドの結果を組み合わせる方法を知っています paste -t',' <(commanda) <(commandb) 同じ入力を別のコマンドにパイプすることがわかっている cat myfile | tee >(commanda) >(commandb) これらのコマンドを組み合わせる方法は?できるように cat myfile | tee >(commanda) >(commandb) | paste -t',' resulta resultb ファイルがあるとしましょう myfile: 1 2 3 4 新しいファイルを作りたい 1 4 2 2 3 4 3 2 6 4 1 8 使った cat myfile | tee >(tac) >(awk …

5
どのコマンドがタブ区切りのテキストファイルをフィードし、各行を80文字にカットしますか?
(時々)タブ区切りデータの複数行のテキストファイルを持っています。ファイルを一目で確認できるようにファイルを出力したいので、各行の最初の80文字だけを表示したいと思います(各行の最初に重要なものを置くようにテキストファイルを設計しました)。 catを使用してファイルの各行を読み取り、パイプ内の次のコマンドに各行を送信できると思いました。 cat tabfile | cut -c -80 しかし、それは壊れているように見えました。あちこち試してみたところ、grepは機能しているように見えましたが、機能していないことがわかりました(ファイルのすべての行に80文字以上あるわけではありません)。タブは、カットによって1文字として数えられるようです。 私は試した: cat tabfile | tr \t \040 | cut -c -80 空白の読みやすさを排除することで、データを少し壊してしまいます。しかし、それはうまくいきませんでした。どちらもしませんでした: cat tabfile | tr \011 \040 | cut -c -80 多分私はtrを間違って使用していますか?以前にtrで問題があり、複数のスペースを削除したい(このマシンでアクセスできるバージョンのtrには、複数の文字を縮小するための-sオプションが表示されます-もっと操作する必要があるかもしれません) 私がいじったら、perl、awk、sed、またはこれを行うための何かを使うことができると思います。 ただし、(POSIX?)通常のコマンドを使用するソリューションが欲しいので、可能な限り移植性があります。最終的にtrを使用する場合、おそらく最終的にタブを文字に変換して、計算を行い、計算を省略してから、出力用にそれらの文字をタブに戻すことになるでしょう。 1行である必要はなく、コマンドラインで直接入力する必要もありません。スクリプトで問題ありません。 タブファイルの詳細: タブを使用してフィールドを分割します。いつか他のプログラムにデータをインポートしたい場合があるからです。そのため、コンテンツの間にタブが1つしかない傾向があります。ただし、プレーンテキストファイルを読みやすくするために、タブを使用して縦の列に配置しています。つまり、一部のテキストでは、次のフィールドを上下に並べてタブが機能する場所に到達するまで、コンテンツの最後にスペースを埋め込みます。 DarkTurquoise#00CED1海、空、手漕ぎボート MediumSpringGreen#00FA9A木の魔法に便利 ライム#00FF00春のニワトリとfru $でのみ使用



5
タイムスタンプを含むファイルから重複する行を削除する
この質問/回答には、ファイル内の同一の行を削除するためのいくつかの良い解決策がありますが、それ以外の場合は重複する行にタイムスタンプがあるため、私の場合は機能しません。 重複を判断するときに、行の最初の26文字を無視するようにawkに指示することは可能ですか? 例: [Fri Oct 31 20:27:05 2014] The Brown Cow Jumped Over The Moon [Fri Oct 31 20:27:10 2014] The Brown Cow Jumped Over The Moon [Fri Oct 31 20:27:13 2014] The Brown Cow Jumped Over The Moon [Fri Oct 31 20:27:16 2014] The Brown Cow Jumped Over The …

2
オプションとなる可能性のある部分を含むテキストのブロックのグレッピング
非常に大きなログファイル、たとえばA.logにイベントを説明する複数のエントリがあります。ログファイルのイベントエントリで2つのことを実行したいと思います。 そのような各エントリの出現回数をカウントします(これは必須の要件ではありませんが、持っていると便利です)。 実際のエントリを別のファイルに抽出し、後で調べます。 典型的なイベントエントリは次のようになり、その間に他のテキストがあります。以下の例では、2つのイベントエントリがあり、最初のエントリには2つのDataChangeEntry ペイロードが含まれ、2番目のイベントには1 つのDataChangeEntry ペイロードが含まれています。 Data control raising event :DataControl@263c015d[[ #### DataChangeEvent #### on [DataControl name=PatternMatch_LegendTimeAxis, binding=.dynamicRegion1. beam_project_PatternMatch_dashboard_LegendTimeAxis_taskflow_LegendTimeAxis_beamDashboardLegendTimeAxisPageDef_beam_project_PatternMatch_dashboard_LegendTimeAxis_taskflow_LegendTimeAxis_beamDashboardLegendTimeAxis_xml_ps_taskflowid.dynamicRegion58. beam_project_PatternMatch_view_LegendTimeAxis_taskflow_LegendTimeAxis_beamVizLegendTimeAxisPageDef_beam_project_PatternMatch_view_LegendTimeAxis_taskflow_LegendTimeAxis_beamVizLegendTimeAxis_xml_ps_taskflowid.QueryIterator] Filter/Collection Id : 0 Collection Level : 0 Sequence Id : 616 ViewSetId : PatternMatch.LegendTimeAxis_V1_0_SN49 ==== DataChangeEntry (#1) ChangeType : UPDATE KeyPath : [2014-06-26 06:15:00.0, 0] AttributeNames : [DATAOBJECT_CREATED, …

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を計算できるようにする簡単な方法はありますか?

6
エントリを分割せずに大きなファイルをチャンクに分割する
UIEE形式でフォーマットされたかなり大きな.msgファイルがあります。 $ wc -l big_db.msg 8726593 big_db.msg 基本的に、ファイルは次のようなさまざまな長さのエントリで構成されています。 UR|1 AA|Condon, Richard TI|Prizzi's Family CN|Collectable- Good/Good MT|FICTION PU|G.P. Putnam & Sons DP|1986 ED|First Printing. BD|Hard Cover NT|0399132104 KE|MAFIA KE|FICTION PR|44.9 XA|4 XB|1 XC|BO XD|S UR|10 AA|Gariepy, Henry TI|Portraits of Perseverance CN|Good/No Jacket MT|SOLD PU|Victor Books DP|1989 BD|Mass Market Paperback NT|1989 tpb …

4
ファイル内の指定された日付よりも新しい行を削除します
指定された日付よりも新しい行を削除する方法に行き詰まっています。これはファイルの内容の抜粋です。 buildsave.txt 647919 2013/11/30 647946 2013/11/30 647955 2013/12/01 648266 2013/12/03 648267 2013/12/03 648674 2013/12/04 2013/12/03より新しい行のみを残して削除したい 647919 2013/11/30 647946 2013/11/30 647955 2013/12/01 これはどのようにbashを介して実行できますか?


2
awkで2つの列を乗算する方法は?
入力ファイルで列1と列2(ファイルの終わりまで)を乗算し、1つの列と3つの列を別々のファイルに出力する必要があります。 input.txt: 1 677679866 2 121867616 3 49413198 4 40415982 output.txt: 1 677679866 2 243735232 3 148239594 4 161663928


1
スパースファイルの非スパース部分を表示する方法は?
次のように作成されたファイルを想像してください。 truncate -s1T file echo test >> file truncate -s2T file 現在、2テビバイトのファイル(ディスク上で4kiBを占めています)"test\n"があり、中央に書き込まれています。 それを"test"効率的に回復するにはどうすればよいでしょうか。つまり、ファイル全体を読み取る必要がありません。 tr -d '\0' < file 結果は出ますが、それは数時間かかります。 私"test\n"が欲しいのは、ファイルの非スパース部分のみを出力するものです(そのため、そのデータを格納するディスクに割り当てられた4kiBブロックのみまたはそれ以上の可能性があります)。 ファイルのどの部分が割り当てられているかを確認するAPI (FIBMAP、FIEMAP、SEEK_HOLE、SEEK_DATA ...)がありますが、それらを公開しているツールは何ですか? ポータブルソリューション(少なくともこれらのAPIをサポートするOSにとって)が評価されます。

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