AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-469475

ranjit abraham's questions

Martin Hope
ranjit abraham
Asked: 2024-10-10 22:45:52 +0800 CST

Sed 命令不匹配并替换多行 xml 上的模式

  • 7

我有许多如下所示的 XML 文件,我想用新字符串替换其中的字符串。我似乎无法让 sed 命令在 xml 文件上工作。

<form version="1.1" theme="dark">
  <label>Forcepoint DLP Dashboard - LongTerm</label>
  <description>Activity for those with Long-Term Exceptions</description>
  <fieldset submitButton="false" autoRun="false">
    <input type="time" token="TimeFrame" searchWhenChanged="true">
      <label>Timeframe</label>
      <default>
        <earliest>-48h@h</earliest>
        <latest>now</latest>
      </default>
    </input>
  </fieldset>
  <row>
    <panel>
      <html>
        <p>Macros In Use:</p>
        <p>`ForcepointApprovedUSB` = Known Approved USB Devices</p>
        <p>`ForcepointKnownCDDVD` = Known CD/DVD Drives</p>
        <p>`ForcepointKnownMultiFunction` = Known Multi-Function Devices</p>
      </html>
    </panel>
  </row>
  <row>
    <panel>
      <title>Exception Info</title>
      <table>
        <search>
          <query>index=restricted_security 
sourcetype=forcepoint 
| rex field=_raw "(.*act=(?&lt;Action&gt;.*?)\s.*)"
| rex field=_raw "(.*duser=(?&lt;Device&gt;.*?)(:\s\d|;|\sfname=).*)"
| rex field=_raw "(.*duser=.*?;\s(?&lt;Serial&gt;.*?)\sfname=)"
| rex field=_raw "(.*fname=(?&lt;Filename&gt;.*?)\smsg=.*)"
| rex field=_raw "(.*fname=.:\\\(?&lt;RawFilename&gt;.*)(?:\s-\s.*)\smsg=.*)"
| rex field=_raw "(.*suser=(?&lt;Name&gt;.*)\scat=.*)"
| rex field=_raw "(.*loginName=.*\\\\(?&lt;Username&gt;.*)\ssourceIp=.*)"
| rex field=_raw "(.*sourceIp=(?&lt;IP&gt;.*)\sseverityType=.*)"
| rex field=_raw "(.*sourceHost=(?&lt;Source&gt;.*)\sproductVersion=.*)"
| rex field=_raw "(.*sourceServiceName=(?&lt;AlertType&gt;.*)\sanalyzedBy=.*)"
| eval Username=lower(Username)
| eval Action=if(isnull(Action),"-",Action)
| eval Serial=if(isnull(Serial),"-",Serial)
| eval EnumDeviceType=case(
    (`ForcepointApprovedUSB`),"ApprovedUSB",
    (`ForcepointKnownCDDVD`),"CDDVD",
    (`ForcepointKnownMultiFunction`),"MultiFunction",
    AlertType="Endpoint Applications" AND Device="Bluetooth","Bluetooth",
    AlertType="Endpoint Removable Media" AND Device="Windows Portable Device (WPD)","WPD",
    AlertType="Endpoint Removable Media" AND 
        Device!="Windows Portable Device (WPD)" AND NOT 
        (`ForcepointApprovedUSB`) AND NOT 
        (`ForcepointKnownCDDVD`) AND NOT 
        (`ForcepointKnownMultiFunction`),"UnApprovedUSB")
| join type=inner Username
[
    search
    index=restricted_security
    sourcetype=dlp_lt
    | rename UserID as Username
    | eval Check = "Yes"
    | fields Username,Check,Justification,Type,ExpireDate
]
| where isnotnull(EnumDeviceType) AND Check="Yes"
| eval Time=strftime(_time, "%B %d, %Y %H:%M %Z")
| dedup Username
| table Time Username Name Justification Type ExpireDate
| sort Name</query>
          <earliest>$TimeFrame.earliest$</earliest>
          <latest>$TimeFrame.latest$</latest>
        </search>
        <option name="drilldown">none</option>
        <option name="refresh.display">progressbar</option>
      </table>
    </panel>
  </row>
  <row>
    <panel>
      <title>Transfers By Those With Long-Term Exceptions</title>
      <table>
        <search>
          <query>index=restricted_security 
sourcetype=forcepoint 
| rex field=_raw "(.*act=(?&lt;Action&gt;.*?)\s.*)"
| rex field=_raw "(.*duser=(?&lt;Device&gt;.*?)(:\s\d|;|\sfname=).*)"
| rex field=_raw "(.*duser=.*?;\s(?&lt;Serial&gt;.*?)\sfname=)"
| rex field=_raw "(.*fname=(?&lt;Filename&gt;.*?)\smsg=.*)"
| rex field=_raw "(.*fname=.:\\\(?&lt;RawFilename&gt;.*)(?:\s-\s.*)\smsg=.*)"
| rex field=_raw "(.*suser=(?&lt;Name&gt;.*)\scat=.*)"
| rex field=_raw "(.*loginName=.*\\\\(?&lt;Username&gt;.*)\ssourceIp=.*)"
| rex field=_raw "(.*sourceIp=(?&lt;IP&gt;.*)\sseverityType=.*)"
| rex field=_raw "(.*sourceHost=(?&lt;Source&gt;.*)\sproductVersion=.*)"
| rex field=_raw "(.*sourceServiceName=(?&lt;AlertType&gt;.*)\sanalyzedBy=.*)"
| eval Username=lower(Username)
| eval Action=if(isnull(Action),"-",Action)
| eval Serial=if(isnull(Serial),"-",Serial)
| eval EnumDeviceType=case(
    (`ForcepointApprovedUSB`),"ApprovedUSB",
    (`ForcepointKnownCDDVD`),"CDDVD",
    (`ForcepointKnownMultiFunction`),"MultiFunction",
    AlertType="Endpoint Applications" AND Device="Bluetooth","Bluetooth",
    AlertType="Endpoint Removable Media" AND Device="Windows Portable Device (WPD)","WPD",
    AlertType="Endpoint Removable Media" AND 
        Device!="Windows Portable Device (WPD)" AND NOT 
        (`ForcepointApprovedUSB`) AND NOT 
        (`ForcepointKnownCDDVD`) AND NOT 
        (`ForcepointKnownMultiFunction`),"UnApprovedUSB")
| join type=inner Username
[
    search
    index=restricted_emn_security
    sourcetype=dlp_lt
    | rename UserID as Username
    | eval Check = "Yes"
    | dedup Username
    | fields Username, Check
]
| where isnotnull(EnumDeviceType) AND Check="Yes"
| eval Time=strftime(_time, "%B %d, %Y %H:%M %Z")
| table Time Username Name Action Source Filename Device Serial EnumDeviceType
| sort -Time</query>
          <earliest>$TimeFrame.earliest$</earliest>
          <latest>$TimeFrame.latest$</latest>
        </search>
        <option name="count">30</option>
        <option name="drilldown">none</option>
      </table>
    </panel>
  </row>
</form>

我想要替换的模式是

index=restricted_security sourcetype=forcepoint

和

index=newname
sourcetype=forcepoint

因此任何模式

index=restricted_security
sourcetype=forcepoint

应被新值替换。

XML 文件有很多组合,例如

index=restricted_security
sourcetype=someother value, index=someindex sourcetype=forcepoint

等等,但它们不需要被替换。

我已经尝试了像下面这样的许多模式和许多 sed 的组合,但似乎不起作用

sed 's/index=restricted_security\s\nsourcetype=forcepoint/index=restricted_security sourcetype=forcepoint/g'

有人能指出如何替换它吗?

sed
  • 3 个回答
  • 180 Views
Martin Hope
ranjit abraham
Asked: 2024-06-28 08:20:35 +0800 CST

Sed 命令列出模式之间的所有行,包括最后一行

  • 7

我有一个类似下面的文件。

[object_category=file]
filesystem = enabled
[object_category=registry]
registry = enabled
[privilege_id=SeAuditPrivilege]
audit = enabled
[privilege_id=SeSecurityPrivilege]
audit = enabled
[selinux=disabled]
insecure = enabled
[shell=%2Fbin%2Fbash]
interactive = enabled
[shell=%2Fbin%2Fsh]

我正在尝试模式匹配,以便我的输出只有以下几行。

[selinux=disabled]
insecure = enabled

我正在使用的命令是

sed -n '/\[selinux=disabled\]/,/\[/p' myfilename

但该命令提供的输出如下

[selinux=disabled]
insecure = enabled
[shell=%2Fbin%2Fbash]

我不想要最后一行,即 [shell=%2Fbin%2Fbash] 。但不知何故,SED 命令也捕获了该行。最简单的选项是什么,可以仅列出我需要的内容,即如下所示?

[selinux=disabled]
insecure = enabled
sed
  • 1 个回答
  • 59 Views
Martin Hope
ranjit abraham
Asked: 2024-05-23 08:51:59 +0800 CST

在bash中循环读取文件时给变量添加数值 [重复]

  • 5
这个问题在这里已经有答案了:
我该如何在bash中添加(减去等)两个数字? (6个回答)
已关闭 昨天。

我有一个包含以下值的文件。我正尝试从文件中读取并在最后一个值上加1096,然后在屏幕上生成输出。我的原始文件看起来像这样。

agile_prod_toolkit,30
alsv2_prod_app,30
alsv2_qa_app,15

我期望的输出应该是这样的。第三个值是第二个值加上1096

agile_prod_toolkit,30,1126
alsv2_prod_app,30,1126
alsv2_qa_app,15,1111

我尝试的是

while IFS="," read line ret;do
value=$ret+1095
print $line,$ret,$value
done < final_original

但这似乎不起作用。有人能告诉我我做错了什么吗?

当我运行上述命令时,我得到的输出是这样的

agile_prod_toolkit,30,30+1095
alsv2_prod_app,30,30+1095
alsv2_qa_app,15,15+1095
bash
  • 1 个回答
  • 23 Views
Martin Hope
ranjit abraham
Asked: 2022-06-15 03:38:18 +0800 CST

循环遍历作为另一个命令输出的变量

  • 0

你好我在这里学习脚本。我正在尝试使用“for”循环编写一个简单的脚本。

我在一个名为 user 的文件夹中有数百个文件夹。
如果我运行这个命令,我会得到一个需要移动到另一个文件夹的文件夹列表

cat failed | awk -F ":" '/FAILED/ {print $1}' |  uniq

即,任务失败的用户下的文件夹必须移动到 users/failed/failedusers

我目前正在做的是我首先使用创建一个新文件

cat failed | awk -F ":" '/FAILED/ {print $1}' |  uniq > failedusers

然后我使用以下命令移动文件夹

while read line; do cp -r users/$line users/failed; done < failedusers

我的问题是我可以只使用for命令而不是将输出写入另一个文件并使用while read命令来完成它吗?

例如,以某种方式为循环中的变量赋值

faileduser=`cat failed | awk -F ":" '/FAILED/ {print $1}' |  uniq`

然后写类似

mv users/$faileduser user/failed/$faileduser

当我尝试写类似上面的东西时,我遇到了各种各样的错误。

谢谢

shell-script for
  • 1 个回答
  • 32 Views
Martin Hope
ranjit abraham
Asked: 2022-05-14 23:46:41 +0800 CST

无法弄清楚为什么文件不会复制

  • 1

我正在尝试编写一个程序,我可以重用它来将内容复制到多个目录中。但是对于它的生命,我无法弄清楚为什么程序不起作用并抛出这个错误。

我有一个文件,其中包含我需要复制到的文件夹的名称。

test1
test2
test3

我正在尝试使用以下命令将名为 default.meta 的文件复制到上述每个文件夹中。

while read $line;
do 
cp -r default.meta $line;
done < test

当我运行命令时,我收到以下错误,并且在它的生命周期内我无法弄清楚为什么这不起作用。

cp: missing destination file operand after ‘default.meta’
Try 'cp --help' for more information.
cp: missing destination file operand after ‘default.meta’
Try 'cp --help' for more information.
cp: missing destination file operand after ‘default.meta’
Try 'cp --help' for more information.
cp: missing destination file operand after ‘default.meta’
Try 'cp --help' for more information.

我在这里想念什么?

bash for
  • 1 个回答
  • 62 Views
Martin Hope
ranjit abraham
Asked: 2022-05-12 05:31:06 +0800 CST

试图做一个完美的 sed 替换

  • 0

我正在尝试使用两个命令进行 sed 替换。我不知道如何将这两个命令组合在一起,以便一次正确地替换单词。

我在这里的角色是附加sc_admin到每个有单词admin的地方。

以下是我能想到的所有单词组合:

access = read : [ admin ], write : [ admin, power ]
access = read : [ security_pan_power ], write : [ security_pan_power ]
access = read : [ * ], write : [ admin, wis_master, wis_read_only, wis_web ]
access = read : [ admin ]
access = read : [ admin, somerole ], write : [ admin, power ]

所以目前我正在使用 2 个 sed 命令进行替换

sed -e '/\bsc_admin\b/b' -e '/admin/ s/ *]/, sc_admin ]/' infile

正确替换读取部分中的单词 admin 但不替换写入部分中的单词 admin。

例如

access = read : [ admin, sc_admin ], write : [ admin, power ]
access = read : [ security_pan_power ], write : [ security_pan_power ]
access = read : [ *, sc_admin ], write : [ admin, wis_master, wis_read_only, wis_web ]
access = read : [ admin, sc_admin ]
access = read : [ admin, somerole, sc_admin ], write : [ admin, power ]
access = read : [ defadmin, somerole, sc_admin ], write : [ admin, power ]

尽管

 sed -e '/\bsc_admin\b/b' -e '/admin/ s/ *] *$/, sc_admin ]/'

命令正确地在写入部分附加单词 admin,而它对读取部分不做任何事情。

access = read : [ admin ], write : [ admin, power, sc_admin ]
access = read : [ security_pan_power ], write : [ security_pan_power ]
access = read : [ * ], write : [ admin, wis_master, wis_read_only, wis_web, sc_admin ]
access = read : [ admin, sc_admin ]
access = read : [ admin, somerole ], write : [ admin, power, sc_admin ]
access = read : [ defadmin, somerole ], write : [ admin, power ]

所以目前我正在运行一个命令,然后我正在运行第二个命令来修复文件。有没有一种万无一失的方法来组合命令以便获得正确的输出?

这是我想要的实际输出:

access = read : [ admin, sc_admin ], write : [ admin, power, sc_admin ]
access = read : [ security_pan_power ], write : [ security_pan_power ]
access = read : [ * ], write : [ admin, wis_master, wis_read_only, wis_web, sc_admin ]
access = read : [ admin, sc_admin ]
access = read : [ admin, somerole, sc_admin ], write : [ admin, power, sc_admin ]
text-processing sed
  • 1 个回答
  • 38 Views
Martin Hope
ranjit abraham
Asked: 2022-05-10 06:35:14 +0800 CST

尝试创建一个while循环以将一个文件的内容输出到另一个文件

  • 0

我正在尝试创建一个 while 循环,以便它从一个文件中获取内容并在另一个文件上创建一些内容。但我注意到的是它只创建文件的最后一行,而不是文件中的所有行。我在这里想念什么?还是我的回声方法错误?

我的名为“test”的文件包含 ex 的字符串列表。

unix_idx
web_pn_iis
wis_healthpartners

我正在使用以下命令来尝试创建一个 while 循环。

while read -r line;
do
echo "  {
    \"name\": \"$line\",  
    \"datatype\": \"event\", 
    \"searchableDays\": 180, 
    \"maxDataSizeMB\": 0, 
    \"totalEventCount\": \"0\", 
    \"totalRawSizeMB\": \"0\" 
    }," > myfile.json;
done < test;

但是一旦命令运行 myfile.json 只包含从测试文件中读取的最后一行。即 wis_healthpartners

  {
"name": "wis_healthpartners",  
"datatype": "event", 
"searchableDays": 180, 
"maxDataSizeMB": 0, 
"totalEventCount": "0", 
"totalRawSizeMB": "0" 
},

因此,我认为在 while 循环运行时,回声已经超过了写入行,并且只剩下最后一行。我如何调整它以使其包含所有行?我想要的输出如下。

{
  "name": "unix_idx",
  "datatype": "event",
  "searchableDays": 180,
  "maxDataSizeMB": 0,
  "totalEventCount": "0",
  "totalRawSizeMB": "0"
},
{
  "name": "web_pn_iis",
  "datatype": "event",
  "searchableDays": 180,
  "maxDataSizeMB": 0,
  "totalEventCount": "0",
  "totalRawSizeMB": "0"
},
{
  "name": "wis_healthpartners",
  "datatype": "event",
  "searchableDays": 180,
  "maxDataSizeMB": 0,
  "totalEventCount": "0",
  "totalRawSizeMB": "0"

},

bash echo
  • 2 个回答
  • 577 Views
Martin Hope
ranjit abraham
Asked: 2022-03-31 22:45:44 +0800 CST

sed 用字符串中的任何随机单词替换

  • 3

您好,我正在尝试使用 sed 对字符串后跟任何随机字符串的文件进行替换。我的原始文件如下所示。

access = read : [ * ], write : [ admin, sc_admin ]
access = read : [ * ], write : [ admin, myuser ]
access = read : [ * ], write : [ admin ]
access = read : [ * ], write : [ admin, randomuser ]
access = read : [ * ], write : [ admin, randomuser, somedude ]
access = read : [ * ], write : [ admin, justarandomuser, somedude, anotherdude ]
access = read : [ * ], write : [ admin, another_random_user ]

我需要在我跟随 admin 的随机用户之后添加一个名为 sc_admin 的字符串,使其看起来像这样

access = read : [ * ], write : [ admin, sc_admin ]
access = read : [ * ], write : [ admin, myuser, sc_admin ]
access = read : [ * ], write : [ admin ]
access = read : [ * ], write : [ admin, randomuser, sc_admin ]
access = read : [ * ], write : [ admin, randomuser, somedude, sc_admin ]
access = read : [ * ], write : [ admin, justarandomuser, somedude, anotherdude, sc_admin ]
access = read : [ * ], write : [ admin, another_random_user, sc_admin ]

我正在尝试运行以下 sed 命令,但它什么也没做。

sed -r "s/\[\ admin\,\ \w+\ \]/\[\ admin\,\ \w+\,\ sc\_admin\ \]/g" local.meta 

我在这里想念什么?

awk sed
  • 3 个回答
  • 192 Views
Martin Hope
ranjit abraham
Asked: 2022-03-22 22:36:26 +0800 CST

基于另一个文件编辑文件中的特定字符串

  • 0

您好,我有一个名为 users 的文件。例如,在该文件中,我有一个用户列表

user1
user2
user3

现在我有另一个名为 search 的文件,其中有一个名为 owner = user 的特定字符串,例如

owner = user1
random text
random text
owner = user15
random text 
random text 
owner = user2

那么是否可以根据用户文件找到所有用户并将这些用户重命名为 [email protected] ?例如

owner = [email protected]
random text
random text
owner = user15
random text 
random text 
owner = [email protected]

我使用 ack 命令和 cat 命令得到了一些零碎的东西,但我是编程新手,所以我无法获得正确的输出。我想出的是下面,但它并没有真正做我需要的。非常感谢任何帮助。

cat users | xargs -i sed 's/{}/moo/' searches
xargs for
  • 2 个回答
  • 28 Views
Martin Hope
ranjit abraham
Asked: 2022-03-22 21:19:48 +0800 CST

如何从文件夹中删除/重命名扩展名

  • 0

我有几个文件夹,例如 [email protected]、[email protected]、[email protected]。我想将它们重命名为 name1、name2、name3 等。我发现如果它们反之亦然,即 name1、name2、name3 我可以通过运行将其移动到 [email protected]

find . -type d -name "*" -depth 1 | while read d; do  mv "$d" "[email protected]"; done

但是我该如何做相反的事情?[email protected] ==> name1

find for
  • 1 个回答
  • 28 Views
Martin Hope
ranjit abraham
Asked: 2022-03-19 06:09:48 +0800 CST

尝试将值从文件循环到 curl 命令

  • 0

我什至不确定这是否可能。我正在尝试创建一个循环,我可以在其中使用文件中的不同值进行卷曲。

for i in `cat id`;
do curl -X POST 'https:/myurl \
--header 'X-XX-Authorization: XX' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'ACS-Licensing-Ack: XXXX' \
--header 'Authorization: Bearer XXXXX' \
--data-urlencode 'XXID=`find * -name $i`'
done

我得到回应

{"code":"400-bad-request","message":"XX app with ID `find * -name $i` not found"}

如何将我之前捕获的 $i 值放入这个 --data-urlencode 字段?我的 id 文件很简单,它包含几个数字,如下所示。1234 23232 32323 非常感谢任何帮助。谢谢。

这是我的身份证文件。它基本上是一个数字列表

1761
1762
1763
1764
1765

所以我的最终目标是进入一个循环,第一个 curl 请求将去 --data-urlencode 'XXID=1761' 第二个请求将去 --data-urlencode 'XXID=1762',第三个去 --data-urlencode ' XXID=1763' 等

curl for
  • 1 个回答
  • 1150 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve