Questions tagged «awk»

一种模式导向的扫描和处理语言。




6
处理/ etc / passwd文件以列出其home文件夹位于/ 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是我在此处复制的文本。 我知道反斜杠存在一个问题,即转义字符,但是如何解决它,以便可以在命令的一行中列出它们?

2
gawk就地和标准输出
是否可以使用gawk的-i inplace选项并将其打印到stdout? 例如,如果我想更新文件,并且有任何更改,请打印文件名,更改的行stderr可以执行以下操作: find -type f -name 'myfiles' -exec gawk -i inplace '{if(gsub(/pat/, "repl")) { print FILENAME > "/proc/self/fd/2" ; print > "/proc/self/fd/2"; } print;}' {} + 但是有stdout替代方法吗?还是有一种更清洁的方法来将该块打印到备用流?
10 awk  gawk 

2
合并两个单独文件中的列
如何使用awk创建一个合并两个单独文件中的选择性列的新文件?无需弄乱两个文件的元素顺序。 示例:文件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

3
用顺序索引替换字符串
有人可以建议一种优雅的方式来实现这一目标吗? 输入: test instant () test instant () ... test instant () //total 1000 lines 输出应为: test instant1 () test instant2 () test instant1000() 空行在我的输入文件中,并且同一目录下有很多文件需要立即处理。 我试图用它替换同一个目录中的许多文件,但没有用。 for file in ./*; do perl -i -000pe 's/instance$& . ++$n/ge' "$file"; done 错误: Substitution replacement not terminated at -e line 1. Substitution replacement …

1
用双反斜杠转义单个点-AWK
“有效的awk编程”书中有一个关于现场拆分的示例。这是示例: 如果要用直截号后接任何单个字符的字段分隔,请使用‘FS = "\\.."’。 为什么是双反斜杠?不是\..吗?

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}'但似乎在两个以上的领域上都会变得混乱。有什么帮助吗?

1
在Linux上将CSV转换为XLS文件
以下Perl脚本可以将CSV文件转换为XLS文件 问题是我需要在客户Linux机器上安装许多Perl模块 为了运行此Perl脚本,实际上我不能,因为Linux机器是客户机器(不允许安装模块) 所以我需要为这个Perl脚本找到其他选择 第一位客户拥有Linux红帽机器版本5.X 而且我想找到一些bash / ksh / sh / awk脚本,它们可以完成与perl脚本相同的工作 所以我想找到其他将CSV转换为XLS文件的替代方法 请咨询如何找到该脚本?或其他建议在Linux计算机上将CSV转换为XLS #!/usr/bin/perl -w ############################################################################### # # Example of how to use the WriteExcel module # # Simple program to convert a CSV comma-separated value file to an Excel file. # This is more or less an non-op …
10 linux  bash  shell-script  awk  perl 

4
awk一次分配给多个变量
我正在尝试从一个字符串中提取两个数值,并使用awk(将它们分配给变量)(gawk这正是我正在使用的)。我想从tmux版本字符串中提取主要和次要版本号到awk变量中,例如: 输入:tmux 2.8; maj == 2和min == 8 输入:tmux 1.9a; maj == 1和min == 9 输入:tmux 2.10; maj == 2和min == 10 假设我的输入来自tmux -Vstdin,我目前有以下内容: tmux -V | awk '{ maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2); min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2); # ...do something with maj and min... }' 这行得通,但是正如许多tmux用户所知道的,if-shell在.tmux.conf文件中使用(我希望在其中使用该东西)很容易导致config文件中的行很长,所以我想知道是否有办法组合这两个变量分配到一个语句中以节省空间...或其他任何方式从输入中收集这两个变量并节省空间。 …
9 awk  gawk 

1
awk意外地从字符串中删除了点
我想在文件中添加一列(第二名),.csv并且我希望该列的值是字符串并用引号引起来; 以下命令会添加列,但不带引号: awk -F"," 'BEGIN { OFS = "," } {$2="2.4.0"; print}' test.csv > output.csv 以下方法的确包含了引号,但是由于某种原因,它删除.了值中的最后一个(点) awk -F"," 'BEGIN { OFS = "," } {$2="\""2.4.0"\""; print}' test.csv > output.csv 所以我的值最终是“ 2.40”。 我应该怎么做?
9 awk  csv 

3
如何从ifconfig命令捕获第一个IP地址?
如何捕获来自ifconfig命令的第一个IP地址? ifconfig -a enw178032: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 100.14.22.12 netmask 255.255.0.0 broadcast 100.14.255.255 inet6 fe80::250:56ff:fe9c:158a prefixlen 64 scopeid 0x20<link> ether 00:10:56:9c:65:8a txqueuelen 1000 (Ethernet) RX packets 26846250 bytes 12068811576 (11.2 GiB) RX errors 0 dropped 58671 overruns 0 frame 0 TX packets 3368855 bytes 1139160934 (1.0 GiB) TX errors 0 …
9 linux  bash  awk  sed  ifconfig 


5
awk sed if语句
如果有“。”,我尝试将0开头。在该行的第二个字符处。我无法将两者结合起来。 awk '{ print substr( $0, 2, 1 ) }' file.txt 显示第二个字符 sed -ie "s/.\{0\}/0/" file.txt 在开头添加零。 应该有一个“如果第二个字符是一个点”。 样本文件: 1.02.2017 23:40:00 10.02.2017 23:40:00 最后: 01.02.2017 23:40:00 10.02.2017 23:40:00

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.