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

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

1
最後の列で数値を並べ替える方法は?
私はこの入力があります: sdkxyosl 1 safkls 2 asdf--asdfasxy_asd 5 dkd8k jasd 29 sdi44sw 43 asasd afsdfs 10 rklyasd 4 この出力が必要です: sdi44sw 43 dkd8k jasd 29 asasd afsdfs 10 asdf--asdfasxy_asd 5 rklyasd 4 safkls 2 sdkxyosl 1 だから私は最後の列で行をソートする必要があります。 1行にいくつの列があるかわかりません。 どうしたらいいか分からない。「perl powers」を持っていません。〜sed、awk、cutなどの平均的なスクリプト機能があります。 誰かがそれを行う方法を知っていますか?

2
パイプ、データはパイプラインでどのように流れますか?
パイプラインでデータがどのように流れるのか理解していないので、誰かがそこで何が起こっているのかを明確にしたいと思っています。 コマンドのパイプラインは、ファイル(テキスト、文字列の配列)を1行ずつ処理します。(各コマンド自体が行ごとに機能する場合。)テキストの各行がパイプラインを通過する場合、コマンドは前の入力が入力全体の処理を完了するまで待機しません。 しかし、そうではないようです。 これがテスト例です。テキストのいくつかの行があります。それらを大文字にして、各行を2回繰り返します。私はそうしcat text | tr '[:lower:]' '[:upper:]' | sed 'p'ます。 プロセスを追跡するために、「インタラクティブ」に実行できますcat。入力ファイル名をスキップします。パイプラインの各部分は、行ごとに実行されます。 $ cat | tr '[:lower:]' '[:upper:]' alkjsd ALKJSD sdkj SDKJ $ cat | sed 'p' line1 line1 line1 line 2 line 2 line 2 しかし、完全なパイプラインは、入力が完了するのを待ってからEOF結果を出力するだけです。 $ cat | tr '[:lower:]' '[:upper:]' | sed 'p' I am writing... …

17
最小文字数の行を見つける方法
一般的なUNIXコマンドを使用して、シェルスクリプトを作成しています。文字数が最も少ない行(空白を含む)を取得する必要があります。最大で約20行あります。 head -$L | tail -1 | wc -m行Lの文字カウントを見つけるために使用できることを知っています。問題は、それを使用して考えることができる唯一の方法は、ifステートメントの混乱を手動で記述して値を比較することです。 サンプルデータ: seven/7 4for 8 eight? five! 4forその行の文字が最も少ないため、戻ります。 私の場合、複数の行の長さが最も短い場合、単一の行が返されます。最小の長さであれば、どちらを選択してもかまいません。しかし、私は、他の状況にいる他のユーザーに両方の方法を示すことに害はないと思います。

1
データを最初の列の降順で並べ替え、値が等しい場合は、2番目の列を昇順で使用します
明確にする: 使用頻度のあるキーワードがあると仮定します。 12 Hi 7 Hash 7 C++ 9 Superuser 17 Stackoverflow 9 LaTeX 42 Life 9 Ubuntu 必要なのは、頻度に基づいてこのデータを降順で並べ替えることです。同じ値がある場合は、2番目の列を昇順で使用する必要があります。 sort -n -r foo.txt 最初の部分はありますが、2番目の列もreversed次のとおりです。 42 Life 17 Stackoverflow 12 Hi 9 Ubuntu 9 Superuser 9 LaTeX 7 Hash 7 C++ 次の結果を得るにはどうすればよいですか? 42 Life 17 Stackoverflow 12 Hi 9 LaTeX 9 …

6
unixコマンドラインでUnicode正規化形式を変換する
Unicodeでは、いくつかの文字の組み合わせに複数の表現があります。 たとえば、文字äは次のように表すことができます 「ä」、つまりコードポイントU + 00E4(c3 a4UTF-8エンコーディングで2バイト)、または 「ä」、つまり2つのコードポイントU + 0061 U + 0308(61 cc 88UTF-8で3バイト)。 Unicode標準によれば、2つの表現は同等ですが、異なる「正規化形式」です。UAX#15:Unicode正規化形式を参照してください。 UNIXツールボックスには、sed、tr、iconv、Perlのようなあらゆる種類のテキスト変換ツールがあります。コマンドラインですばやく簡単にNF変換を行うにはどうすればよいですか?

4
bashでは、任意のバイトカウントオフセットからファイルの読み取りを開始できますか?
8 GBログ(テキスト)のどこかにある日付を見つけたい。 完全な順次読み取りをいくらかバイパスし、最初にファイルのバイナリ分割(サイズ)を行うか、何らかの方法でファイルシステムをナビゲートしinodes(これについてはほとんど知りません)、適切なオフセットが見つかるまで各分割ポイントから読み取りを開始できますか?日付を含む行のテキスト検索を開始する場所 tailの最後の行の読み取りは通常の順次読み取りを使用しないため、この機能が何らかの方法でbashで利用できるのか、PythonまたはC / C ++を使用する必要があるのでしょうか...しかし、私は特にbashオプションに興味があります..

7
tail -f、ただし行番号付き
リモートサーバー上で、任意の時間内に何回foo bar表示さ/var/log/foo.logれるかを確認しようとしていますが、これまで試したものは何も機能しませんでした。 既にテーリングを開始してからの経過時間を追跡するために使用するタイマースクリプトがあり、テール出力に/var/log/foo.log何回foo bar出現したかを知る方法が欲しいのです。 Googleで検索しましたが、結果の最初の10ページに関連するものは見つかりませんでした。 イライラする結果で私が試したものは次のとおりです。 ## works on local machine, but doesn't work as expected on remote tail -f /var/log/foo.log | grep foo\ bar | sed '=' ## works on local, but not remote tail -f /var/log/foo.log | grep foo\ bar | cat -n - ## works on local, …

4
sed-文字列をファイルの内容に置き換えます
2つのファイルがあります:file1とfile2。 file1 次の内容があります。 --- host: "localhost" port: 3000 reporter_type: "zookeeper" zk_hosts: - "localhost:2181" file2IPアドレスが含まれています(1.1.1.1) 私がしたいのは、に置き換えlocalhostて1.1.1.1、最終結果が次のようになることです: --- host: "1.1.1.1" port: 3000 reporter_type: "zookeeper" zk_hosts: - "1.1.1.1:2181" 私が試してみました: sed -i -e "/localhost/r file2" -e "/localhost/d" file1 sed '/localhost/r file2' file1 |sed '/localhost/d' sed -e '/localhost/r file2' -e "s///" file1 ただし、行全体を置き換えるか、変更する必要があるIPの後に行にIPを移動します。

4
区切り文字で長い行を分割する
このような入力を分割するために使用できるコマンドは次のとおりです。 foo:bar:baz:quux これに? foo bar baz quux cutコマンドを理解しようとしていますが、「最初の1000文字」や「最初の7フィールド」など、一定量の入力でのみ機能するようです。任意の長い入力で作業する必要があります。

6
コマンドラインに優しいスプレッドシート
そのようなものは存在しますか?CLI環境で適切に表示されるテキストベースのスプレッドシート。私は自分が好きなようにできることcat foobar.csvを知っていますが、それは特に実用的でも魅力的でもありません。テーブルをフォーマットするのが難しいとは想像できず、おそらく特定のルール(数学?)に従うこともできます。 Emacsはorg-modeテキストベースのテーブルを非常にうまく処理し、複数の形式にエクスポートできます。ただし、Emacsを使用する必要があります!Vimユーザーとしては避けたいものです。

4
特定のパターンまたはファイル内の文字列の後、各行の残りを削除する方法は?
テキストファイルにURLのリストがあるとします。 google.com/funny unix.stackexchange.com/questions isuckatunix.com/ireallydo 「.com」の後にあるすべてのものを削除したい。 予想された結果: google.com unix.stackexchange.com isuckatunix.com 私は試した sed 's/.com*//' file.txt しかし、それも削除し.comました。

13
ファイルからすべてのコメントを削除するにはどうすればよいですか?
コメント付きのファイルがあります: foo bar stuff #Do not show this... morestuff evenmorestuff#Or this コメントされていないコードをすべて印刷したいだけです。 foo bar stuff morestuff evenmorestuff ファイルからコメントを取り除くことができることはとても重要です...それを行う良い方法は何ですか?

3
シェルコマンドを使用してすべての行に行番号を追加するにはどうすればよいですか?
私のファイル、 PSS-A (Primary A) PSS-B (Primary B) PSS-C (Primary C) PSS-D (Primary D) PSS-E (Primary E) PSS-F (Primary F) PSS-G (Primary G) PSS-H (Primary H) PSS-I (Primary I) SPARE (SPARE) 出力ファイル、 1> PSS-A (Primary A) 2> PSS-B (Primary B) 3> PSS-C (Primary C) 4> PSS-D (Primary D) 5> PSS-E (Primary …

2
複数のファイル間の共通行を見つける
私は4つのファイルを持っています file A >TCONS_00000867 >TCONS_00001442 >TCONS_00001447 >TCONS_00001528 >TCONS_00001529 >TCONS_00001668 >TCONS_00001921 file b >TCONS_00001528 >TCONS_00001529 >TCONS_00001668 >TCONS_00001921 >TCONS_00001922 >TCONS_00001924 file c >TCONS_00001529 >TCONS_00001668 >TCONS_00001921 >TCONS_00001922 >TCONS_00001924 >TCONS_00001956 >TCONS_00002048 file d >TCONS_00001922 >TCONS_00001924 >TCONS_00001956 >TCONS_00002048 すべてのファイルには2000行以上が含まれており、最初の列でソートされています。 すべてのファイルで共通の行を見つけたい。私はawkとgrepとcommを試しましたが、動作しませんでした

1
テールを使用する場合、改行をヌル区切りに変換します
tail改行の代わりにヌル終了行を使用するように出力を変更するにはどうすればよいですか? 私の質問はこれに似ています:bashのnull区切りの入力で「head」と「tail」を行う方法は?、しかし、私は次のようなことをしたいという点で異なります: tail -f myFile.txt | xargs -i0 myCmd {} "arg1" "arg2" をfind使用していないため、使用できません-print0 これはすべて、xargsで発生するエラーを回避するためです。 xargs: unmatched double quote; by default quotes are special to xargs unless you use the -0 option

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