linux - 根据文件中的输入将文本添加到行的开头

标签 linux bash sed awk tr

您好,我有一项艰巨的任务(至少对我而言)。我需要执行以下操作:

这是我的意见

host1
atetley 170.198.19.165 91 18 6 4198
NJPYNYFWD01 170.198.82.143 257 14 6 4749
NJTTKLFWD01 170.198.82.142 257 13 6 3993
host2
dfriel 198.177.151.69 91 14 6 2023
host3
dfriel 198.177.151.69 91 14 6 2023
fklotz 198.177.151.81 91 15 6 1829
ganthos 198.177.151.92 91 20 6 791

我需要以下输出

host1 atetley 170.198.19.165 91 18 6 4198
host1 NJPYNYFWD01 170.198.82.143 257 14 6 4749
host1 NJTTKLFWD01 170.198.82.142 257 13 6 3993
host2 dfriel 198.177.151.69 91 14 6 2023
host3 dfriel 198.177.151.69 91 14 6 2023
host3 fklotz 198.177.151.81 91 15 6 1829 
host3 ganthos 198.177.151.92 91 20 6 791

完全不知道该怎么做。我确实可以控制如何在输出文件中注入(inject)主机名(例如 host1 host host3 )。所以我可以说在每个主机前放置一个唯一标识符,例如“uuu”

uuuhost1
atetley 170.198.19.165 91 18 6 4198
NJPYNYFWD01 170.198.82.143 257 14 6 4749
NJTTKLFWD01 170.198.82.142 257 13 6 3993
UUUhost2
dfriel 198.177.151.69 91 14 6 2023
UUUhost3
dfriel 198.177.151.69 91 14 6 2023
fklotz 198.177.151.81 91 15 6 1829
ganthos 198.177.151.92 91 20 6 791

但我仍然需要这样的结果。如果添加唯一标识符有帮助。我可以在文件 mainpulation 结束后删除它。示例从文件中取出所有“UUU”

host1 atetley 170.198.19.165 91 18 6 4198
host1 NJPYNYFWD01 170.198.82.143 257 14 6 4749
host1 NJTTKLFWD01 170.198.82.142 257 13 6 3993
host2 dfriel 198.177.151.69 91 14 6 2023
host3 dfriel 198.177.151.69 91 14 6 2023
host3 fklotz 198.177.151.81 91 15 6 1829 
host3 ganthos 198.177.151.92 91 20 6 791

谁能帮我解决这个问题?

最佳答案

您可以使用 awk 打印它:

awk 'NF==1{h=$1;next} {print h, $0}' file
host1 atetley 170.198.19.165 91 18 6 4198
host1 NJPYNYFWD01 170.198.82.143 257 14 6 4749
host1 NJTTKLFWD01 170.198.82.142 257 13 6 3993
host2 dfriel 198.177.151.69 91 14 6 2023
host3 dfriel 198.177.151.69 91 14 6 2023
host3 fklotz 198.177.151.81 91 15 6 1829
host3 ganthos 198.177.151.92 91 20 6 791

关于linux - 根据文件中的输入将文本添加到行的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22056006/

相关文章:

linux - 运行for循环以在shell脚本中重命名多个文件时出错

linux bash 'sort' 按字典顺序

regex - 在 POSIX BRE 中表达替代?

sed - 使用sed从文件中删除第一行和最后一行或记录

python - pyodbc.OperationalError : ('HYT00' , u'[HYT00] [unixODBC][Microsoft][SQL Server 的 ODBC 驱动程序 13] 登录超时已过期 (0) (SQLDriverConnect)')

linux - 与 ls -l 相比,ls 命令需要系统调用吗?

php - 用于 linux 系统的 sqlsrv_query()?

bash - 在 linux 目录中重命名最新创建的文件

linux - Bash 脚本不会将输入重定向到子进程

bash - 在 Bash 中删除空行并修剪周围的空格