Questions tagged «awk»

AWK是一种解释型编程语言,专门用于文本处理,通常用作数据提取和报告工具。AWK主要用于Unix系统。

17
是否有Unix实用程序在stdin之前添加时间戳?
我最终使用Python为此编写了一个快速的小脚本,但是我想知道是否有一个实用程序可以将文本输入到每行的前面,在我的特定情况下是时间戳,您可以在其中输入文本。理想情况下,用法将类似于: cat somefile.txt | prepend-timestamp (在您回答sed之前,我尝试过此操作: cat somefile.txt | sed "s/^/`date`/" 但这只会在执行sed时对date命令进行一次评估,因此同一时间戳会错误地添加到每一行。)
168 unix  shell  awk 

8
bash:获得输出的第n列的最短方法
假设在您的工作日中,您反复遇到bash中某个命令的以下形式的列化输出形式(对于我而言,是svn st在我的Rails工作目录中执行): ? changes.patch M app/models/superman.rb A app/models/superwoman.rb 为了处理命令的输出(在本例中为文件名),需要进行某种形式的解析,以便将第二列用作下一条命令的输入。 我一直在做的事情是使用awk第二列,例如,当我想删除所有文件(不是那是典型的用例:)时,我会这样做: svn st | awk '{print $2}' | xargs rm 由于我输入了很多内容,一个自然的问题是:在bash中完成此操作的方法是否更短(因此更酷)? 注意:尽管我的具体示例在我的svn工作流程中,但我要问的实际上是一个shell命令问题。如果您认为工作流程很愚蠢,并且建议使用其他方法,那么我可能不会拒绝您,但是其他人可能会拒绝,因为这里的问题实际上是如何以最短的方式以bash格式输出第n列命令。谢谢 :)
165 bash  awk 

9
在awk中打​​印倒数第二列/字段
我想在awk中打​​印倒数第二列或字段。字段数是可变的。我知道我应该可以使用,$NF但不确定如何使用。 这似乎不起作用: awk ' { print ( $NF-- ) } '
164 awk  gawk 

22
如果换行符是文件中的最后一个字符,该如何删除?
我有一些文件要删除最后一个换行符(如果它是文件中的最后一个字符)。 od -c告诉我,我运行的命令确实以尾随新行写入文件: 0013600 n t > \n 我用sed尝试了一些技巧,但我能想到的最好的方法不是: sed -e '$s/\(.*\)\n$/\1/' abc 任何想法如何做到这一点?
162 linux  perl  shell  awk  sed 

8
如何从命令输出中获取第二列?
我的命令输出如下: 1540 "A B" 6 "C" 119 "D" 第一列始终是数字,后跟空格,然后是双引号字符串。 我的目的是仅获取第二列,例如: "A B" "C" "D" 我打算用它<some_command> | awk '{print $2}'来完成此任务。但是问题是,第二列中的某些值包含空格,这恰好是分隔awk字段的默认定界符。因此,输出混乱了: "A "C" "D" 如何干净地获得第二列的值(带双引号)?
152 shell  awk  ksh 

21
如何从命令行将每两行合并为一个?
我有一个以下格式的文本文件。第一行是“ KEY”,第二行是“ VALUE”。 KEY 4048:1736 string 3 KEY 0:1772 string 1 KEY 4192:1349 string 1 KEY 7329:2407 string 2 KEY 0:1774 string 1 我需要与键在同一行中的值。所以输出应该像这样... KEY 4048:1736 string 3 KEY 0:1772 string 1 KEY 4192:1349 string 1 KEY 7329:2407 string 2 KEY 0:1774 string 1 如果可以使用一些分隔符,例如$或会更好,: KEY 4048:1736 string , 3 …
151 bash  awk  sed  grep 

9
使用sed或awk在特定的行号处插入一行
我有一个脚本文件,需要用另一个脚本进行修改才能在第8行插入文本。 要插入的字符串:Project_Name=sowstest,到名为的文件中start。 我尝试使用awk和sed,但是我的命令出现乱码。
146 sed  awk 

10
按行长度(包括空格)对文本文件进行排序
我有一个看起来像这样的CSV文件 AS2345,ASDF1232,Plain Example先生,RI Bintan ave.110,Atlantis,RI,12345,(999)123-5555,1.56 AS2345,ASDF1232,Plain Example夫人,1121110 Ternary st。110 Binary ave ..,Atlantis,RI,12345,(999)123-5555,1.56 AS2345,ASDF1232,Mr.Plain Example,RI Binary Ave.110,Liberty City,RI,12345,(999)123-5555,1.56 AS2345,ASDF1232,Mr。Plain Example,RI,Some City,Ternary ave.110,12345,(999)123-5555,1.56 我需要按行长度(包括空格)对其进行排序。以下命令不包含空格,有没有办法对其进行修改,以便它对我有用? cat $@ | awk '{ print length, $0 }' | sort -n | awk '{$1=""; print $0}'
137 bash  sorting  text  awk 


8
使用awk将修改保存到位
我正在学习awk,我想知道是否存在将更改写入文件的选项,类似于sed我使用-i选项将更改保存到文件的位置。 我确实知道我可以使用重定向来编写更改。但是,有选择awk吗?
135 linux  unix  awk 

11
打印文件中一行的最后一列
我有一个不断写入/更新的文件。我想找到包含特定单词的最后一行,然后打印该行的最后一列。 该文件看起来像这样。随着时间的流逝,更多的A1 / B1 / C1线将被附加到该行上。 A1 123 456 B1 234 567 C1 345 678 A1 098 766 B1 987 6545 C1 876 5434 我尝试使用 tail -f file | grep A1 | awk '{print $NF}' 打印值766,但没有任何输出。 有没有办法做到这一点?
135 file  awk  tail 

9
如何在两个标记模式之间选择可能会用awk / sed多次出现的行
使用awk或sed如何选择出现在两个不同标记图案之间的线?可能会有多个部分标有这些模式。 例如:假设文件包含: abc def1 ghi1 jkl1 mno abc def2 ghi2 jkl2 mno pqr stu 起始模式为abc,结束模式为,mno 所以我需要输出为: def1 ghi1 jkl1 def2 ghi2 jkl2 我使用sed一次匹配模式: sed -e '1,/abc/d' -e '/mno/,$d' <FILE> 有什么办法sed或awk 重复做直到文件结束?

10
如何使用带shebang的awk使用多个参数(即#!)?
我想使用shebang 执行gawk脚本--re-interval。“天真”的方法 #!/usr/bin/gawk --re-interval -f ... awk script goes here 这是行不通的,因为gawk是用第一个参数"--re-interval -f"(不能在空白处拆分)调用的,它无法理解。有没有解决方法? 当然,您不能直接调用gawk,而是将其包装到一个拆分第一个参数的shell脚本中,或者制作一个外壳脚本,然后再调用gawk并将该脚本放入另一个文件中,但是我想知道是否有某种方法可以执行在一个文件中。 shebang行的行为因系统而异-至少在Cygwin中,它不按空格分隔参数。我只是关心如何在这样的系统上进行操作。该脚本不是可移植的。
118 shell  unix  awk  gawk  shebang 


5
如何在awk中转义单引号
我想做以下 awk 'BEGIN {FS=" ";} {printf "'%s' ", $1}' 但是以这种方式转义单引号不起作用 awk 'BEGIN {FS=" ";} {printf "\'%s\' ", $1}' 这该怎么做?感谢帮助。
110 awk 

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.