小编jay*_*ngh的帖子

使用echo修改主机文件

我有两个简单的脚本,当我不希望它尝试在每次登录/网络转换时进行连接时,可以启用/禁用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)

macos bash sudo echo

3
推荐指数
2
解决办法
4405
查看次数

磁盘使用格式

如何获取人类可读格式-h option但也正确排序的磁盘使用情况信息.

现在,如果我使用-h option它不能正确排序,即GMK不按升序排列.

unix bash shell scripting

2
推荐指数
1
解决办法
632
查看次数

sed用反斜杠替换正斜杠

我必须使用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上运行它,它工作正常.谁能告诉我什么是错的?

谢谢!

makefile sed mingw32

2
推荐指数
2
解决办法
1万
查看次数

删除CSV文件中的一系列行,但在给定范围之间的行除外

如何删除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,提前致谢

unix csv sed

2
推荐指数
1
解决办法
691
查看次数

Awk:如何获得一个领域的一部分?

我得到了这些数据:

aaa:123 bbb:**234** ccc:345

eee:435 ddd:**231** xxx:897

...
Run Code Online (Sandbox Code Playgroud)

如何使用Awk获得粗体部分?

awk

2
推荐指数
2
解决办法
3303
查看次数

打印当月的说明{date +%B}

打印当月的命令是:

date +%B
Run Code Online (Sandbox Code Playgroud)

现在为什么有一个+和一个%在前面B

是否+意味着插入文件的全部内容并%意味着将程序带到前台处理?

unix bash date

2
推荐指数
1
解决办法
73
查看次数

如何用sed替换1个文件中的所有实例?

我需要替换所有出现的内容并写回同一个文件

我试过了:

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

任何的想法?

linux shell sed

2
推荐指数
1
解决办法
1728
查看次数

用awk(gawk)数字排序

为了解决问题,我编写了以下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)

awk gawk

2
推荐指数
2
解决办法
5073
查看次数

使用双引号而不是......时有什么区别?

我的代码相当简单,只是输出彼此不同.而且,我想知道为什么结果显示如下..

#!/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)

bash

2
推荐指数
1
解决办法
46
查看次数

Bash/Shell:如何从列中删除csv文件中的重复项?

我有一个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但我找不到只检查几列的方法.

csv sorting bash shell uniq

2
推荐指数
1
解决办法
2701
查看次数

标签 统计

bash ×5

sed ×3

shell ×3

unix ×3

awk ×2

csv ×2

date ×1

echo ×1

gawk ×1

linux ×1

macos ×1

makefile ×1

mingw32 ×1

scripting ×1

sorting ×1

sudo ×1

uniq ×1