linux - shell脚本创建变量并在文件中查找变量

标签 linux shell awk getline

我有这样的数据:

M-089]action=;Params=0000000;
M-091]act=;Params=3333333;
M-091]2001
M-090]action=;Params=3333333;
M-090]2001
M-089]4241

查找“action=”字符串并使用方法编号相同的编号。示例 089 或 090

M-089]action=;Params=0000000;M-089]4241
M-090]action=;Params=3333333;M-090]2001


nawk '/action=/' | sed 's/]//'| awk '{val=$1;getline $1;print val,$1}' infile

最佳答案

回答:

假设您只想连接具有相同方法编号的行 这是适合您的解决方案:输出与原始文件的顺序不同

sort -r infile | awk -F "]" '{printf NR%2?$0:$0"\n"}' | awk /action/

1) sort -r infile - 将相关行放在彼此之上(M-090]action comes be for M-090]Number ascii 表)

2) 用"]" 分割线

3) 数据已排序,很容易检查行是否均匀打印 $0 否则打印 $0 和新行 ($0"\n")

4) 过滤结果中包含您的字符串的行 awk/action/

关于linux - shell脚本创建变量并在文件中查找变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48680788/

相关文章:

Python使用os.walk对目录中的所有文件分别运行exiftool

linux - Linux 中的最后一个命令

python - 如果列检查为特定值,则提取行 - Unix

linux - 如何在 printf 之后使用 uniq

C程序中的chdir系统调用

html - 如何使用awk根据其他字段求和字段

python - 强制 celery 守护进程使用 Python 3

linux - 使用ansible提示读取密码时出现问题

linux - 为什么 Bash 变量在 if 语句内为空,但在 if 语句外却不为空?

shell - 将一个文件的内容复制到另一个文件中相对于文件末尾的一点