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

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

2
stdoutを分割して複数の出力ファイルに移動する方法は?
たとえば、command大量の行を標準出力に出力するコマンドがあります。 line1 line2 ..... lineN 出力をディスクに保存しますが、単一のファイルとしてではなく、それぞれが1000行のstdoutを持つ一連のファイルとして保存します。 file0001.txt: ------------- line1 .... line1000 file0002.txt: ------------- line1001 .... line2000 etc 私は答えをグーグルで検索しようとしましたが、グーグルが私にtee命令するように指示するたびに、これはこの状況では役に立ちません。おそらく、間違ったクエリを入力しています。

3
wc -Lは、タブ文字の行の長さ8を報告します。バグまたは機能?
-Lはの便利な機能ですwc。最も長い行の長さを印刷します。何らかの理由で、シングルバイトのタブ文字を8の長さに 拡張します。タブを「拡張」しないように設定する方法はありますか?そして、この拡張の背後にある理由は何でしょうか? echo -n $'\t' | wc -L 出力 8 wc(GNU coreutils)7.4 GNU bash、バージョン4.1.5

2
「while IFS = read ..」では、なぜIFSは効果がないのですか?
何か間違っているかもしれませんが、IFDを事前実行/完了リストのコマンドの 1つとして設定してもまったく効果がないことは納得できそうです。以下のスクリプトに示されているすべての例で は、外側のIFS(構造の外側while)が優先されます。 何が起きてる?この状況でIFSが何をするかについて間違った考えを持っていますか?配列分割の結果は、「expected」列に示されているとおりであると予想しました。 #!/bin/bash xifs() { echo -n "$(echo -n "$IFS" | xxd -p)"; } # allow for null $IFS show() { x=($1) echo -ne " (${#x[@]})\t |" for ((j=0;j<${#x[@]};j++)); do echo -n "${x[j]}|" done echo -ne "\t" xifs "$IFS"; echo } data="a b c" echo -e "----- -- …

4
彼らはどのようにしてマウスの前にUnixコンピューターを運転し、コピー&ペーストしましたか?
Unixは40歳であるため、Unixはコンピュータマウスの発明よりも古いです。(実際、Unixが1969年から、マウスが1972年からだった場合、わずか3年です。)新規ユーザーは、コピー&ペーストをせずに、Unixでどのようにしたのですか?彼らは常にコピー/貼り付け機能付きのテキストエディターを持っていましたが、Linuxで行うことはすべてWebブラウザーからコピーし、(CLIPBOARDから)vimまたはgeditまたはgnome端末に貼り付けることです。あなたは同じですよね? manファイルをvimにロードし、そのファイルから一時バッファーにコードをコピーして貼り付け、bashにそのバッファーを実行させることは想像できません。たぶん、彼らは決してemacsを残しませんでした。それが答えですか?

3
perl -iをシンボリックリンクでなくする方法はありますか?
私の友人は、あなたがそうするなら: perl -pi.bak -e 's/foo/bar/' somefile 「somefile」が実際にシンボリックリンクである場合、perlはドキュメントが行うと言っていることを実行します。 入力ファイルの名前を変更し、元の名前で出力ファイルを開き、その出力ファイルをprint()ステートメントのデフォルトとして選択することにより、これを行います。拡張子が指定されている場合、その拡張子を使用して、古いファイルの名前を変更し、バックアップコピーを作成します[...] これにより、変更されていない実ファイルを指す新しいシンボリックリンク "somefile.bak"と、変更された新しい変更された通常ファイル "somefile"が作成されます。 多くの場合、シンボリックリンクをたどるのは望ましい動作です(たとえ.bakファイルの正しい場所があいまいなままであっても)。ラッパー内のシンボリックリンクをテストし、適切にケースを処理する以外に、これを行う簡単な方法はありますか? (sedそれが価値があることのために、同じことをします。)

3
頻繁なIPのログファイルの解析
だから、DDOS攻撃を受けている間にこれを一緒にハックして、ログからいたずらな IP を引き出しました。誰もそれを改善するための改善や他の提案がありますか? 一般的な考え方は次のとおりです。 IPのみをログファイルからプル それらを並べ替える uniqとそれらを数える もう一度並べ替えます そして、ストリングo'pipes: cut --delim " " -f7 /var/log/apache_access | sort | uniq -c | sort -rn > sorted-ips.txt

4
バイトオフセットから行番号を取得する
ファイルのバイトオフセットがある。 このバイトの行番号を提供するツールはありますか? 最初のバイトは1ではなく0です。 1から始まる行番号。 ファイルには、プレーンテキスト、「バイナリ」ブロブ、マルチバイト文字などの両方を含めることができます。しかし、興味があるセクション:ファイルの終わりにはASCIIしかありません。 例、ファイル: 001 002 003 <<-- first zero on this line is byte 8 004 8私にラインを与えるバイトオフセットを持っています3。 行番号を見つけるためにこのようなものを使用できると思います: a。tail -c+(offset + 1) file | wc -l、ここ+1でtailは1から数えます 。wc -l file c。次にtail -n+num どこnumにa - b + 1 しかし...私にnum直接与えることができるかなり一般的なツールはありますか? 編集、エラー:またはより明白な: head -c+offset file | wc -l


3
Awkでパターンに一致するレコードをカウントする
だから私はlast > lastloggedin最後のシステム再起動以降のクラスの最後のログインを示すファイルを作成するように言われました、そして今私は文字列myawkをlastloggedin含む行数を数える/決定する という名前のAwkスクリプトを書くように求められますCFS264。 終わったよ grep -c CFS264 lastloggedin

3
単語の最後の文字を削除しますが、文字がそこにある場合のみ-bashで
最後の文字がある場合にのみそれを削除する方法は? 入力: OpenOffice.org/m openOffice.org/ozm パース。 Pfg。 フィル。 教授 それぞれ。 Roonstr./m roonstr./ozm 望ましい出力: OpenOffice.org openOffice.org パース 製造 フィル 教授 応答 Roonstr roonstr これまでのところ、ドットだけが残っていることがわかりましたが、残念ながら最後のsedコマンドも文字を削除しgます。 $ cat filename | grep "\." | cut -d"/" -f1 | sed 's/.$//'

4
Vimエディターで一連の行の空白を削除する
ファイルに次のようなテキストが含まれています。 sample text some random text even more random text text with no indent worst indention 各行の前の空白を削除する必要があります。私がしていることは一行です 0dw を使用して同じコマンドを繰り返すことができます。しかし、次の行に手動で移動することによって。 しかし、それらの行のブロックに「0dw」を適用する方法はありますか? マクロを使う方法はあると思いますが、これまで使ったことはありません。しかし、他に選択の余地がない場合、私はそれらを学びたいと思っています。

3
名前付きパイプへの自動EOFを防止し、必要なときにEOFを送信する
特定のストリーム(次の場合はstdin)でEOFを読み取ると自動的に終了するプログラムがあります。 次に、名前付きパイプを作成し、プログラムの標準入力をそれに接続するシェルスクリプトを作成します。その後、スクリプトは、パイプへの書き込みを数回使用echoし、cat(自動的にEOF彼らの出口を生成し、他のツールを)。私が直面している問題は、最初の処理echoが完了すると、EOFをパイプに送信してプログラムを終了させることです。このようなものを使用tail -fすると、プログラムを終了しようとするときにEOFを送信できません。私はバランスの取れた解決策を研究していますが、無駄です。 EOFを防ぐ方法とEOFを手動で送信する方法の両方をすでに見つけましたが、それらを組み合わせることができません。ヒントはありますか? #!/bin/sh mkfifo P program < P & : # Run in background # < P tail -n +1 -f | program echo some stuff > P # Prevent EOF? cat more_stuff.txt > P # Prevent EOF? send_eof > P # How can I do this? # …

4
シェルスクリプトを介してymlファイルを変更することは可能ですか?
これは私のdocker-compose.ymlがどのように見えるかです。 nginx: container_name: 'nginx' image: 'nginx:1.11' restart: 'always' ports: - '80:80' - '443:443' volumes: - '/opt/nginx/conf.d:/etc/nginx/conf.d:ro' links: - 'anything' 次に、シェルスクリプトを介してコンテンツを追加する必要があります(ubuntuサーバー上)。それが可能かどうかはよくわかりません: 新しい要素がnginx/links存在しない場合は、に追加します 追加のnewthingブロックなしnewthingブロックが存在されていない場合 新しいコンテンツは次のようになります。 nginx: container_name: 'nginx' image: 'nginx:1.11' restart: 'always' ports: - '80:80' - '443:443' volumes: - '/opt/nginx/conf.d:/etc/nginx/conf.d:ro' - '/etc/letsencrypt:/etc/letsencrypt' links: - 'anything' - 'newthing' newthing: container_name: foo image: 'newthing:1.2.3' …

10
シェルスクリプトを使用して文字列からすべての重複する単語を削除する
私は次のような文字列を持っています "aaa,aaa,aaa,bbb,bbb,ccc,bbb,ccc" 文字列から重複する単語を削除したい場合、出力は次のようになります "aaa,bbb,ccc" 私はこのコードソースを試しました $ echo "zebra ant spider spider ant zebra ant" | xargs -n1 | sort -u | xargs 同じ値で正常に動作していますが、変数値を指定すると、重複する単語もすべて表示されます。 重複する値を削除するにはどうすればよいですか。 更新 私の質問は、ユーザーが同じ場合、対応するすべての値を単一の文字列に追加することです。このようなデータがあります-> user name | colour AAA | red AAA | black BBB | red BBB | blue AAA | blue AAA | red CCC | …


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