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

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

5
列のタイムスタンプを日付に変換するにはどうすればよいですか?
これを含むファイルがあります: 1415602803,LOGIN SUCCESS,AUTH,user2,192.168.203.63,10.146.124.73,59996,22 1415602807,LOGIN SUCCESS,AUTH,user1,172.24.31.10,172.32.1.1,48191,22 1415602811,LOGIN FAILED,AUTH,root,172.24.166.153,10.146.124.73,52506,22 1415602815,LOGIN FAILED,AUTH,user3,192.168.123.55,10.146.32.99,55750,22 タイムスタンプをこの形式の日付に変換したい: 2014-11-10 02:00:03,LOGIN SUCCESS,AUTH,user2,192.168.203.63,10.146.124.73,59996,22 2014-11-10 02:00:07,LOGIN SUCCESS,AUTH,user1,172.24.31.10,172.32.1.1,48191,22 2014-11-10 02:00:11,LOGIN FAILED,AUTH,root,172.24.166.153,10.146.124.73,52506,22 2014-11-10 02:00:15,LOGIN FAILED,AUTH,user3,192.168.123.55,10.146.32.99,55750,22 どうやってやるの? 私はこれが機能することを知っています:(この質問perl -pe 's/(\d+)/localtime($1)/e'から)しかし、出力形式はです。Mon Nov 10 02:00:03 2014 このコマンドでタイムスタンプを目的の出力に変換できることはわかっていますdate -d@1415602803 +"%F %H:%M:%S"が、すべての引用符などのために、それをawk使用して動作させることはできませんでしたsystem("cmd")。

3
UTF-8で `cut -c`(` --characters`)を使用できませんか?
このコマンドにcutは、オプションの-cあるバイトではなく、文字を処理するオプションがあります-b。しかし、en_US.UTF-8ロケールでは機能しないようです: 2番目のバイトは、2番目のASCII文字(UTF-8とまったく同じようにエンコードされます)を提供します。 $ printf 'ABC' | cut -b 2 B ただし、UTF-8ロケールでは3つのギリシャ語の非ASCII文字のうち2番目の文字は表示されません。 $ printf 'αβγ' | cut -b 2 � 大丈夫-2番目のバイトです。 したがって、代わりに2番目の文字を見てみましょう。 $ printf 'αβγ' | cut -c 2 � それは壊れているように見えます。 いくつかの実験で、範囲3-4が2番目の文字を示していることがわかりました。 $ printf 'αβγ' | cut -c 3-4 β しかし、これはバイト3〜4と同じです。 $ printf 'αβγ' | cut -b 3-4 β したがって、これはUTF-8の-c場合を超えません-b。 ロケールのセットアップはUTF-8には適切ではないと思いますが、比較すると、wc期待どおりに機能します。 …

3
ファイルBの文字列を含むファイルAのすべての行を削除します
users.csvuserNames、userIDs、およびその他のデータのリストを含むCSVファイルがあります。 username, userid, sidebar_side, sidebar_colour "John Lennon", 90123412, "left", "blue" "Paul McCartny", 30923833, "left", "black" "Ringo Starr", 77392318, "right", "blue" "George Harrison", 72349482, "left", "green" 別のファイルtoremove.txtには、ユーザーIDのリストがあります。 30923833 77392318 users.csvIDを含むファイルからすべての行を削除する賢明で効率的な方法はありますtoremove.txtか?2つのファイルを解析し、にない行のみを新しいファイルに書き込む単純なPythonアプリを作成しましたがtoremove.txt、非常に遅いです。おそらく、いくつかsedまたはawk魔法がここで役立ちますか? 上記の例を考慮すると、これは望ましい結果です。 username, userid, sidebar_side, sidebar_colour "John Lennon", 90123412, "left", "blue" "George Harrison", 72349482, "left", "green"

7
1つのコマンドで2つの異なるカット出力を組み合わせますか?
次のようなファイルがあります。 1234 ABCD EFGH 次のように変換したいと思います。 2341 BCDA FGHE 実際のファイルには4,000語あるので、効率的な方法でこれを実行したいと思います。コマンドを使用してみcut -c 2-4,1 file.txtましたが、入力とまったく同じ出力が生成されます。3つの異なるコマンドを使用できると考えていました。 cut -c 1 file.txt > temp1.txt cut -c 2-4 file.txt > temp2.txt // combine the two with paste or pr ...しかし、1つのコマンドを実行する方が、毎回3つのコマンドを実行するよりもエラーが発生しにくいので、わずかな変更を加えて複数回実行する必要があるため、単一のコマンドを好むでしょう。 2つのカットステートメントを1つに結合する方法はありますか?何かのようなもの: cut -c 1 file.txt | pr (cut -c 2-4 file.txt) または、これを行うためのより良い方法はありますか?

2
コマンド置換から末尾の改行文字はどこに行ったのですか?
次のコードは、状況を最もよく説明しています。最後の行が末尾の改行文字を出力しないのはなぜですか?各行の出力はコメントに表示されます。GNU bashバージョン4.1.5を使用しています echo -n $'a\nb\n' | xxd -p # 610a620a x=$'a\nb\n' ; echo -n "$x" | xxd -p # 610a620a echo -ne "a\nb\n" | xxd -p # 610a620a x="$(echo -ne "a\nb\n")" ; echo -n "$x" | xxd -p # 610a62

8
複数行のgrepを実行する方法
2行に表示されるテキストに対してgrepをどのように実行しますか? 例えば: pbsnodes Linuxクラスタの使用率を返すコマンドです root$ pbsnodes node1 state = free procs = 2 bar = foobar node2 state = free procs = 4 bar = foobar node3 state = busy procs = 8 bar = foobar 「フリー」状態のノードに一致するprocの数を判別したい。これまで「procの数」と「フリー状態のノード」を特定できましたが、それらをすべてのフリーprocを表示する1つのコマンドに結合したいと思います。 上記の例では、正解は6(2 + 4)になります。 私が持っているもの root$ NUMBEROFNODES=`pbsnodes|grep 'state = free'|wc -l` root$ echo $NUMBEROFNODES …




5
テキストファイルから列2を切り取る
私のテキストファイルには、セパレーターだけのスペースを指定する区切り文字がありません。出力ファイルに列2を切り取る方法、 39 207 City and County of San Francisc REJECTED MAT = 0 78 412 Cases and materials on corporat REJECTED MAT = 0 82 431 The preparation of contracts an REJECTED MAT = 0 だから私が必要な出力は 207 412 432

8
文字列内のドット区切り要素の逆順
次のような入力文字列があります: arg1.arg2.arg3.arg4.arg5 私が欲しい出力は次のとおりです。 arg5.arg4.arg3.arg2.arg1 常に5つの引数ではなく、2〜10である場合があります。 bashスクリプトでこれを行うにはどうすればよいですか?

5
2つのファイルを区切り文字のトリプルパイプ記号「|||」で1行ずつマージします
2つの言語で同じ行数を持つ2つの並列ファイルがあり、これら2つのファイルを区切り文字で1行ずつマージする予定|||です。たとえば、2つのファイルは次のとおりです。 ファイルA: 1Mo 1,1 I love you. 1Mo 1,2 I like you. Hi 1,3 I am hungry. Hi 1,4 I am foolish. ファイルB: 1Mo 1,1 Ich liebe dich. 1Mo 1,2 Ich mag dich. Hi 1,3 Ich habe Durst. Hi 1,4 Ich bin neu. 予想される出力は次のとおりです。 1Mo 1,1 I love you. ||| …

4
行ごとの単語数で行を並べ替える
与えられた入力: hello: world foo bar baz bar: baz: bin boop bop fiz bang beep bap: bim bam bop boatkeeper: poughkeepsie 次のように、一番上で、少なくとも最後で、ほとんどの単語に並べ替えたいと思います: baz: bin boop bop fiz bang beep hello: world foo bar baz bap: bim bam bop boatkeeper: poughkeepsie bar: sortまたは他のツールでこれを行うにはどうすればよいですか?

3
シェルコマンドを使用してファイルから列または複数の列を削除するにはどうすればよいですか?
私のファイル、 ARCHIVE B1_NAME B2_NAME B3_NAME ELEMENT INFO_NAM WERT PROCID -------- -------- -------- -------- -------- -------- ---- ------ 15MinAvg AIRSS 33-GIS DMDMGIS1 I MvAvr15m 1123 CP 15MinAvg AIRSS 33-GIS DMDMGIS1 P MvAvr15m 2344 CP 15MinAvg AIRSS 33-GIS DMDMGIS1 Q MvAvr15m 4545 CP 15MinAvg AIRSS 33-GIS DMDMGIS2 I MvAvr15m 6576 CP 15MinAvg …


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