linux - linux下如何查找字符串

标签 linux awk sed grep

如何仅提取以下行中的/app/xxxx 字段,并将 df -P -T 命令添加到提取的字符串中,并以以下格式保存输出

edlp_nps_app:x:23449:5000:EDLP_NPS_APP (HP):/app/edlp_nps_app:/bin/bash
genxp_app:x:23414:15887:GENXP_APP (HP):/app/genxp_app:/bin/bash
icegnapp:x:21697:15954:ICEGNAPP (HP):/app/icegnapp:/bin/bash
icegnftp:x:21554:15416:ICEGNFTP 
(HP):/app/icegnftp:/usr/libexec/openssh/sftp-server

df -P -T /app/XXXXX
df -P -T /app/edlp_nps_app
O/P:
Filesystem                 Type 1024-blocks     Used Available Capacity 
Mounted on
/dev/mapper/rootvg-rootvol ext4   144365708 27057836 110769428      20% /

我需要的输出是 FS、类型、安装位置、应用程序名称

/dev/mapper/rootvg-rootvol ext4//app/edlp_nps_app

我尝试了 awk 命令,但没有成功

最佳答案

使用awk测试第6个字段是否以/app开头,如果为true则打印第6个字段

awk -F':' '$6~/^\/app/{print "df -P -T "$6}' infile | bash

保存到文件

awk -F':' '$6~/^\/app/{print "df -P -T "$6}' infile | bash > outfile

为了避免多次打印标题,您可以通过管道传输另一个awk,如下所示

awk -F':' '$6~/^\/app/{print "df -P -T "$6}' infile | bash | awk 'FNR==1{print;next}/Filesystem/{next}1' >outfile

测试结果:

输入:

$ cat file
edlp_nps_app:x:23449:5000:EDLP_NPS_APP (HP):/app/edlp_nps_app:/bin/bash
genxp_app:x:23414:15887:GENXP_APP (HP):/app/genxp_app:/bin/bash
icegnapp:x:21697:15954:ICEGNAPP (HP):/app/icegnapp:/bin/bash
icegnftp:x:21554:15416:ICEGNFTP 
(HP):/app/icegnftp:/usr/libexec/openssh/sftp-server

输出:

$ awk -F: '$6~/^\/app/{print "df -P -T "$6}' file 
df -P -T /app/edlp_nps_app
df -P -T /app/genxp_app
df -P -T /app/icegnapp

关于linux - linux下如何查找字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46264436/

相关文章:

linux - 如何在 Linux 上将时间戳证书添加到已签名的 PE 文件?

linux - 在 Linux 上使用 SslStream 进行身份验证时 RemoteCertificateNameMismatch

bash - 提取赋值表达式的值

php - 带替换的 sed 正则表达式

linux - Unix 命令行 : how to add double quotes to a word?

c - 将文件移动到不同的 linux 目录

python - 我如何报告在整个脚本中从未匹配的任何正则表达式?

awk - 引用字段并为该字段分配一些逻辑

linux - linux下如何合并两个文件

linux - 将简单的 emaildump 转换为 maildir 或 mbox 格式