Questions tagged «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区域设置中不起作用: 第二个字节给出第二个ASCII字符(在UTF-8中编码相同): $ printf 'ABC' | cut -b 2 B 但不会在UTF-8语言环境中给出三个希腊非ASCII字符中的第二个: $ printf 'αβγ' | cut -b 2 � 没关系-这是第二个字节。 因此,我们改为看第二个字符: $ printf 'αβγ' | cut -c 2 � 看起来坏了。 通过一些实验,结果表明范围3-4显示了第二个字符: $ printf 'αβγ' | cut -c 3-4 β 但这与字节3到4相同: $ printf 'αβγ' | cut -b 3-4 β 因此,对于UTF-8,-c最多不会超过-b。 我希望语言环境设置不适用于UTF-8,但是相比之下,它wc可以按预期工作; …

3
删除文件A中包含文件B中字符串的所有行
我有一个CSV文件users.csv,其中包含用户名,用户ID和其他数据的列表: 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.csv文件中删除包含ID的所有行toremove.txt?我编写了一个简单的Python应用程序来解析这两个文件,并仅将在中找不到的那些行写入一个新文件toremove.txt,但是这非常慢。也许有些sed或awk魔术可以帮助这里? 考虑以上示例,这是理想的结果: username, userid, sidebar_side, sidebar_colour "John Lennon", 90123412, "left", "blue" "George Harrison", 72349482, "left", "green"

8
如何执行多行grep
您将如何对出现在两行上的文本执行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 我想确定与处于“ free”状态的节点匹配的proc的数量。到目前为止,我已经能够确定“进程数”和“处于空闲状态的节点”,但是我想将它们组合成一个显示所有空闲进程的命令。 在上面的示例中,正确答案将是6(2 + 4)。 我有的 root$ NUMBEROFNODES=`pbsnodes|grep 'state = free'|wc -l` root$ echo …

7
在单个命令中组合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 ...但是我更希望使用一个命令,因为我需要对它进行几次修改并稍作修改,因此运行一个命令比每次运行3个命令更容易出错。 有什么方法可以将2个cut语句组合为一个吗?就像是: cut -c 1 file.txt | pr (cut -c 2-4 file.txt) 还是有更好的方法来做到这一点?





7
如何grep -v并排除比赛后的下一行?
如何为匹配grep regex的每一行过滤出2行? 这是我的最低要求: SomeTestAAAA EndTest SomeTestABCD EndTest SomeTestDEFG EndTest SomeTestAABC EndTest SomeTestACDF EndTest 显然我尝试了例如grep -vA 1 SomeTestAA不起作用。 所需的输出是: SomeTestABCD EndTest SomeTestDEFG EndTest SomeTestACDF EndTest



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


5
用定界符三重管道符号“ |||”逐行合并两个文件
我有两个并行文件,两种语言的行数相同,并计划使用定界符逐行合并这两个文件|||。例如,两个文件如下: 档案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. ||| …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.