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

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

6
/ etc / passwdファイルを処理して、ホームフォルダーが/ homeにあるすべてのユーザーをリストします。
次のような/ etc / passwdファイルの例があります。 tom:x:1000:1000:Work:/home/tom:/bin/bash george:x:1000:1000:Work:/home/george:/bin/bash bla:x:1000:1000:Work:/home/bla:/bin/bash boo:x:1000:1000:Work:/home/boo:/bin/bash bee:x:1000:1000:Work:/root/list:/bin/bash にホームフォルダーがあるすべてのユーザーを一覧表示しようとしています/home/。 私が書いた cat ~/Desktop/e.txt |awk -F ":" '{if ($6 ~/^/home/) print $1;}' ここで、e.txtはここにコピーしたテキストです。 エスケープ文字であるバックスラッシュに問題があることを理解していますが、コマンドの1行にリストできるようにするにはどうすれば修正できますか?

1
ファイル内のテキストの重複ブロックを特定する
ファイル内のテキストの重複または重複に近いブロックを識別する便利な方法はありますか? これを使用して、コードの重複を識別します。この機能を備えた専門プログラムがあるようですが、私はそれを関与させるつもりはありません。 一種の「ファイル内」差分を行うことができるdiffに似たツールがあることを願っています。さらに良いのは、単一ファイルvimdiff内です。

2
2つの別々のファイルの列をマージする
awkを使用して2つの別々のファイルから選択的な列をマージする新しいファイルを作成するにはどうすればよいですか?両方のファイルの要素の順序を台無しにすることなく。 例:ファイル3には、ファイル1の列1、2、3およびファイル2の列4が含まれる場合があります。 File 1 A 23 8 T A 63 9 9 B 45 3 J File 2 A 0 A 6 B 5 File 3 A 23 8 0 A 63 9 6 B 45 3 5

6
bashで末尾の改行を削除するにはどうすればよいですか?
Perlのように動作するものを探していchompます。私は単に入力を表示するコマンドを探しています。それが改行の場合は最後の文字を差し引いたものです。 $ printf "one\ntwo\n" | COMMAND_IM_LOOKING_FOR ; echo " done" one two done $ printf "one\ntwo" | COMMAND_IM_LOOKING_FOR ; echo " done" one two done (BashとZshでコマンドを置換すると、末尾の改行がすべて削除されますが、末尾の改行を最大1つ削除するものを探しています。)

3
BOM(FF FE)で始まるファイルを処理する
FF FEBOM を含む.csvファイルを受け取りました。 $ head -n1 dotan.csv | hd 00000000 ff fe 41 00 64 00 20 00 67 00 72 00 6f 00 75 00 |..A.d. .g.r.o.u.| を使用awkして解析すると、nullバイトが大量に取得されますが、これはバイトオーダーが原因であると考えられます。このファイルのバイトオーダーを(CLIを使用して)スワップして、通常のツールがそれで動作するようにするにはどうすればよいですか? このファイルはASCII文字(BOMを除く)だけであるとgrep思いますが、バイナリファイルであるとは考えられないため、確認できません。 $ grep -P '^[\x00-\x7f]' dotan.csv Binary file dotan.csv matches VIMで同じ文字列を検索すると、一致するすべての文字が表示されます。 iconvASCIIへの変換に使用しても\ x00値は削除されません。UTF-8ではなくnullバイトのように見えるため、実際には問題がさらに悪化します。 $ iconv -f UTF-8 -t ASCII dotan.csv > …

2
大きな1行ファイルの基本的なsedコマンド:メモリを再割り当てできませんでした
250 MBのテキストファイルがすべて1行にあります。 このファイルで、a文字をb文字に置き換えます。 sed -e "s/a/b/g" < one-line-250-mb.txt それは失敗します: sed: couldn't re-allocate memory この種のタスクは、多くのメモリを割り当てずにインラインで実行できるように思えます。 仕事のためのより良いツール、またはより良い使用方法はありますsedか? GNU sedバージョン4.2.1 Ubuntu 12.04.2 LTS 1 GB RAM

6
与えられたパターンのセットから、パターンで始まらない行を削除します
次のようなデータを含むファイルがあります。 report aaaaaaaa - .. -th bbbbbbbbb -to ccccccccc .. --. 質問:次の文字列で始まらない行を削除したい: report -th -to つまり、desired出力は、これらの中間の不要なドットとハッシュをすべて削除し、次のようになります。 report aaaaaaaa -th bbbbbbbbb -to ccccccccc sed/ awk/ grep/ etc機能するソリューション。

6
treeコマンドの出力をjson形式に変換する
* nixコマンドの「ツリー」の出力をJSON形式に変換する便利な方法はありますか? 編集: 私は自分の問題を十分に説明していなかったと思います。私の目標は次のようなものを変換することです: . |-- dir1 | |-- dirA | | |-- dirAA | | `-- dirBB | `-- dirB `-- dir2 |-- dirA `-- dirB に: {"dir1" : [{"dirA":["dirAA", "dirAB"]}, "dirB"], "dir2": ["dirA", "dirB"]}

4
並行して作成された他の3つのストリームから単一の出力ストリームを作成する
異なるフォーマットの3種類のデータがあります。データ型ごとに、それを単一の統一フォーマットに変換するPythonスクリプトがあります。 このPythonスクリプトは遅く、CPUにバインドされている(マルチコアマシンのシングルコアに)ため、スクリプトの3つのインスタンスを実行し(データタイプごとに1つ)、それらの出力を組み合わせてに渡しsortます。基本的に、これと同等です: { ./handle_1.py; ./handle_2.py; ./handle_3.py } | sort -n しかし、3つのスクリプトが並行して実行されます。 ストリームを処理するスクリプトのn個のインスタンス間で、いくつかのstdoutストリームをラウンドロビンするためにGNU が使用されているこの質問を見つけましたsplit。 分割されたmanページから: -n, --number=CHUNKS generate CHUNKS output files. See below CHUNKS may be: N split into N files based on size of input K/N output Kth of N to stdout l/N split into N files without splitting lines …


4
フィールドをインラインで並べ替え
不明な数のフィールドで入力行内をソートしようとしています: 入力: ab bc bc ab cd ef bc bc cd ef cd bc ab ef ab bc cd gh 出力: ab bc ab bc bc cd ef bc cd ef ab cb cd ab bc cd ef gh 私はのようなものを使用してきましたがawk '{if($2 < $1) print $2,$1;else print}'、3つ以上のフィールドで乱雑になるようです。何か助けは?

7
文字のASCII数値を取得する
AZまたはazの範囲のASCII文字を要求し、同等の数値を返すシェルスクリプトを記述しようとしています。たとえば、出力は次のようになります。 scarlet$ Please type a character between A and Z or between a and z: scarlet$ A scarlet$ The decimal value of A is: 65 私の試み: #!/bin/bash echo Enter a letter: read A echo -n ${A} | od -i | head -1 | cut -b 10- | tr -d " …

2
シェルスクリプト:ファイルが存在しない場合に、ファイルに複数行のコンテンツを書き込むにはどうすればよいですか?
/opt/nginx/conf.d/default.confシェルスクリプトを使用してこの内容のファイルを作成し、ファイルが存在しない場合は作成する必要があります。 server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; } シェルスクリプトを使用して複数行のコンテンツを作成するにはどうすればよいですか? ディレクトリを作成しました sudo mkdir -p /opt/nginx/conf.d しかし、ファイルの書き方がわかりません。



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