我在 XML 文件中有如下记录。我需要搜索<keyword>SEARCH</keyword>,如果存在,那么我需要获取整个记录并写入另一个文件。(从<record>to开始</record>)
下面是我的 awk 代码,它在循环内。$1保存每条记录的逐行值。
if(index($1,"SEARCH")>0)
{
print $1>> "output.txt"
}
Run Code Online (Sandbox Code Playgroud)
这个逻辑有两个问题,
output.txt文件,只有<keyword>SEARCH</keyword>元素而不是整个记录(从<record>to开始</record>)<detail>标签中。这段代码甚至会将该标签写入output.txtXML文件:
<record category="xyz">
<person ssn="" e-i="E">
<title xsi:nil="true"/>
<position xsi:nil="true"/>
<names>
<first_name/>
<last_name></last_name>
<aliases>
<alias>CDP</alias>
</aliases>
<keywords>
<keyword xsi:nil="true"/>
<keyword>SEARCH</keyword>
</keywords>
<external_sources>
<uri>http://www.google.com</uri>
<detail>SEARCH is present in abc for xyz reason</detail>
</external_sources>
</details>
</record>
<record category="abc">
<person ssn="" e-i="F">
<title xsi:nil="true"/>
<position xsi:nil="true"/>
<names>
<first_name/> …Run Code Online (Sandbox Code Playgroud) 我想以普通用户身份执行脚本并执行关闭 apache(需要 root 密码)的命令。
我想知道是否可以使用 sudo 运行该脚本,但它会以特定用户身份执行某些命令并以 root 身份执行特定命令。
我怎样才能做到这一点?
我创建了一个 shell 脚本来每分钟在我的树莓派上捕获图像。我认为有些事情不太正确,因为它一直在拍照但没有保存它们。我想知道是否有人可以指出这个脚本是否应该工作:
#!/bin/bash
DATE=$(date +"%Y-%m-%d")
TIME=$(TIME +"%H%M%S")
if[! -d /media/pi/organ/$DATE]; then mkdir /media/pi/organ/$DATE; fi
raspistill -vf -ISO 100 -o /media/pi/organ/$DATE/$TIME.jpg
Run Code Online (Sandbox Code Playgroud)
附加信息:
raspistill -vf -ISO 100 -o /media/pi/organ/$DATE.jpg工作
我还添加了 crontab 每分钟运行一次,这也有效:
* 8-20 * * * /home/pi/camera.sh 2>&1
Run Code Online (Sandbox Code Playgroud)
我担心的是将它放置超过 4 周,因此文件数量会超过文件夹的限制,因此我试图将其分解。
当我添加此脚本时,它停止工作,我不知道如何从这里进行故障排除。
假设我在 bash 脚本中有 Yes/No 结构:
read -r -p "Yes or no?" response
if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]
then
do ...
else
exit 0
fi
Run Code Online (Sandbox Code Playgroud)
我希望这个构造一直执行到我按“否”为止。即,如果我按“是”,那么在操作完成后“做...”执行我想再次“是还是否?” 回复。
我正在尝试为 git 存储库自动化 deb 包构建器,作为其中的一部分,我想获得一堆提交评论(自上一个包发布以来)并将它们放入debian/changelog新版本的多个评论中。
我正在使用这样的dch“批处理模式”:
dch -v ${RELEASE_VER} --distribution stable "comment"
Run Code Online (Sandbox Code Playgroud)
但这仅适用于一条评论。如果我多次运行它,我会得到多个版本条目。
该dch手册页说:
如果在命令行上给出更改的文本,debchange 将在批处理模式下运行并简单地添加文本,必要时使用换行符
我不确定“必要时使用换行符”是什么意思,但如果作为第一个非选项参数传递的注释文本包含新行,dch将从文本中删除新行并将其作为单个注释。
我有一个文件如下
input file
0.0 4 6 5 1 2 9 4 5 1 .....
0.25
0.5 3 1
1.0 3 7 8 2
1.5 3 3 3 4 6 4 5
2.0
2.5 6 7 6 9
Run Code Online (Sandbox Code Playgroud)
我想删除所有行中只有一个值的行,所以结果将是这样的
out file
0.0 4 6 5 1 2 9 4 5 1 .....
0.5 3 1
1.0 3 7 8 2
1.5 3 3 3 4 6 4 5
2.5 6 7 6 9
Run Code Online (Sandbox Code Playgroud) 每当我尝试使用在我的 SSH 会话中声明的变量时,它都会给我空白输出。这是我尝试执行的代码:
ssh -T host <<\HERE
export usage1=$(df -h |grep /nas/infa|sed s/%//g| awk '{printf("%d\n",$4)}');
echo $usage1
HERE
echo $usage1
Run Code Online (Sandbox Code Playgroud)
我能够在 SSH 会话中获得所需的输出,但是在 SSH 之外调用相同的变量时,它给我空白。
所以,我正在编写一个备份脚本,并想跳过 .iso 文件。
如果我从命令行使用命令,一切正常:
rsync -a --delete --exclude='*.iso' /home/user/Desktop/Work /mnt/profile/Desktop/
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在我的脚本中使用它时,没有获得“排除”设置,并继续复制 .iso 文件。这是脚本:
#!/bin/bash
set -e
SRC_DIR="/home/user/Desktop/Work"
DST_MOUNTPOINT="/mnt/profile"
DST_DIR="/mnt/profile/Desktop/"
OPTIONS=" --exclude='*.iso' "
mountpoint -q $DST_MOUNTPOINT || mount $DST_MOUNTPOINT
rsync -a --delete $OPTIONS $SRC_DIR $DST_DIR
Run Code Online (Sandbox Code Playgroud)
如果我运行脚本,获取它的 PID 并检查 /proc/PID/cmdline,排除设置就在那里。
我做错了什么?
我想逐行读取文件并将其内容放在特定位置的其他字符串中。我创建了以下脚本,但无法将文件内容放入该字符串中。
文件:cat /testing/spamword
spy
bots
virus
Run Code Online (Sandbox Code Playgroud)
脚本:
#!/bin/bash
file=/testing/spamword
cat $file | while read $line;
do
echo 'or ("$h_subject:" contains "'$line'")'
done
Run Code Online (Sandbox Code Playgroud)
输出:
or ("$h_subject:" contains "")
or ("$h_subject:" contains "")
or ("$h_subject:" contains "")
Run Code Online (Sandbox Code Playgroud)
输出应该是这样的:
or ("$h_subject:" contains "spy")
or ("$h_subject:" contains "bots")
or ("$h_subject:" contains "virus")
Run Code Online (Sandbox Code Playgroud) 我有 Gnuplot 脚本(exe),在这个脚本中,我提供X_001作为输入文件,由某个函数绘制,给出输出文件X_001.png。如果我手动输入输入和输出文件的名称,效果会很好。我试图在文件{X_001..X_300}上循环这个脚本 我写了这个循环
for i in X_*; do sed -i 's/X_*/${i}/g' exe ; ./exe ; done
Run Code Online (Sandbox Code Playgroud)
但这无济于事
这应该在exe脚本中进行更改
set term png size 1600,1200
set output "X_001.png"
splot 'X_001'
Run Code Online (Sandbox Code Playgroud)