我有两个简单的脚本,当我不希望它尝试在每次登录/网络转换时进行连接时,可以启用/禁用Cisco AnyConnect。一切都很好,但我也想在主机文件中添加一行。我对大多数命令使用“ echo $ password | sudo -S”的原因是因为此脚本是从Mac OS X的脚本菜单运行的。终端窗口未打开以解决sudo密码提示。
#!/bin/bash
#Start_AnyConnect.command
password=`/usr/bin/osascript <<EOT
with timeout of (30 * 60) seconds
tell application "Finder"
activate
set myReply to text returned of (display dialog "Enter your password to authorize AnyConnect startup script" default answer "" with hidden answer)
end tell
end timeout
EOT`
echo $password | sudo -S echo -e "127.0.0.1\twpad.company.com" >> /etc/hosts
sleep 2
echo $password | sudo -S mv "/Library/LaunchAgents_Disabled/com.cisco.anyconnect.gui.plist" "/Library/LaunchAgents/com.cisco.anyconnect.gui.plist"
echo $password | sudo -S mv "/Library/LaunchDaemons_Disabled/com.cisco.anyconnect.vpnagentd.plist" "/Library/LaunchDaemons/com.cisco.anyconnect.vpnagentd.plist" …Run Code Online (Sandbox Code Playgroud) 如何获取人类可读格式-h option但也正确排序的磁盘使用情况信息.
现在,如果我使用-h option它不能正确排序,即GMK不按升序排列.
我必须使用mingw32将具有正斜杠的文件名转换为带有反斜杠的文件名.我使用以下sed命令将结果存储在变量中:
ORIGINAL=./a/b/main1.c ./a/b/main2.c ./a/b/main3.c
Run Code Online (Sandbox Code Playgroud)
sed命令:
RESULT=$(shell echo $(ORIGINAL) | sed 's/\//\\/g')
Run Code Online (Sandbox Code Playgroud)
而输出结果是:
.\a\b\main1.c .abmain2.c .abmain3.c
Run Code Online (Sandbox Code Playgroud)
如果我直接在bash上运行它,它工作正常.谁能告诉我什么是错的?
谢谢!
如何删除CSV文件中的一系列行除了给定范围之间的一行(或几行或不连续)...让我说我需要删除CSV文件的前五行但保留第三行你是如何实现这一目标的.我试图使用SED但没有帮助.
sed '1,5d;3!d' filenname.CSV > tempfilename.txt
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过给出范围来做到这一点
sed '1,2d;4,5d' filenname.CSV > tempfilename.txt
Run Code Online (Sandbox Code Playgroud)
但是,想知道是否有一个解决方法,我可以指定一个范围来删除并给出一条线(或行之间或不连续)的例外
如果我错了,请纠正.
Dhruuv,提前致谢
我得到了这些数据:
aaa:123 bbb:**234** ccc:345
eee:435 ddd:**231** xxx:897
...
Run Code Online (Sandbox Code Playgroud)
如何使用Awk获得粗体部分?
打印当月的命令是:
date +%B
Run Code Online (Sandbox Code Playgroud)
现在为什么有一个+和一个%在前面B?
是否+意味着插入文件的全部内容并%意味着将程序带到前台处理?
我需要替换所有出现的内容并写回同一个文件
我试过了:
sed 's/one/two/g' file.txt
Run Code Online (Sandbox Code Playgroud)
这打印出来但不写入文件
我也试过了
sed 's/one/two/g' file.txt>file.txt
Run Code Online (Sandbox Code Playgroud)
这导致空文件
sed -i 's/one/two/g' file.txt
Run Code Online (Sandbox Code Playgroud)
给出错误: sed: 1: "file.txt": invalid command code f
任何的想法?
为了解决问题,我编写了以下gnu-awk脚本并遇到了排序问题(应该先阅读手册).
从手册:
由于IGNORECASE会影响字符串比较,因此IGNORECASE的值也会影响asort()和asorti()的排序.另请注意,区域设置的排序顺序不起作用; 比较仅基于字符值.
这是建议的解决方案:
awk '{
lines[$0]=length($0)
}
END {
for(line in lines) { tmp[lines[line],line] = line }
n = asorti(tmp)
for(i=1; i<=n; i++) {
split(tmp[i], tmp2, SUBSEP);
ind[++j] = tmp2[2]
}
for(i=n; i>0; i--)
print ind[i],lines[ind[i]]
}' file
aaaaa foo 9
aaa foooo 9
aaaa foo 8
aaa foo 7
as foo 6
a foo 5
aaaaaaa foooo 13
Run Code Online (Sandbox Code Playgroud)
我尝试添加0以强制数字类型,但无法达到所需的输出.有没有办法可以模拟数字排序awk/gawk?
aaa foooo
aaaaaaa foooo
a foo
aaa foo
aaaaa …Run Code Online (Sandbox Code Playgroud) 我的代码相当简单,只是输出彼此不同.而且,我想知道为什么结果显示如下..
#!/bin/bash
fileList=`ls`
echo $fileList # without doubleQuote
Run Code Online (Sandbox Code Playgroud)
输出:
f1 f2 f3
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash
fileList=`ls`
echo "$fileList" # with doubleQuote
Run Code Online (Sandbox Code Playgroud)
输出:
f1
f2
f3
Run Code Online (Sandbox Code Playgroud) 我有一个csv分开;.我需要删除第2列和第3列的内容不唯一的行,并将材料传递到标准输出.
输入示例:
irrelevant;data1;data2;irrelevant;irrelevant
irrelevant;data3;data4;irrelevant;irrelevant
irrelevant;data5;data6;irrelevant;irrelevant
irrelevant;data7;data8;irrelevant;irrelevant
irrelevant;data1;data2;irrelevant;irrelevant
irrelevant;data9;data0;irrelevant;irrelevant
irrelevant;data1;data2;irrelevant;irrelevant
irrelevant;data3;data4;irrelevant;irrelevant
Run Code Online (Sandbox Code Playgroud)
期望的输出
irrelevant;data5;data6;irrelevant;irrelevant
irrelevant;data7;data8;irrelevant;irrelevant
irrelevant;data9;data0;irrelevant;irrelevant
Run Code Online (Sandbox Code Playgroud)
我找到了只有第一行打印到输出的解决方案:
sort -u -t ";" -k2,1 file
Run Code Online (Sandbox Code Playgroud)
但这还不够.
我试过使用,uniq -u但我找不到只检查几列的方法.