标签: awk

使用awk删除不需要的字符

我有一个命令输出,我想从中删除双引号".

正则表达式:

strings -a libAddressDoctor5.so |\
grep EngineVersion |
awk '{if(NR==2)print}' |
awk '{print$2}'
Run Code Online (Sandbox Code Playgroud)

输出:

EngineVersion="5.2.5.624"
Run Code Online (Sandbox Code Playgroud)

我想知道如何用awk或删除不需要的字符sed.

linux awk replace sed

29
推荐指数
3
解决办法
10万
查看次数

删除Linux上的Windows换行符(sed vs. awk)

在字段中间(不是行尾)放置一些带有不正确放置的换行符的分隔文件,在Vim中显示为^ M. 它们源自freebcp(在Centos 6上)导出的MSSQL数据库.以十六进制方式转储数据显示\ r \n模式:

$ xxd test.txt | grep 0d0a
0000190: 3932 3139 322d 3239 3836 0d0a 0d0a 7c43
Run Code Online (Sandbox Code Playgroud)

我可以用awk删除它们,但我无法用sed做同样的事情.

这适用于awk,完全删除换行符:

awk 'gsub(/\r/,""){printf $0;next}{print}'
Run Code Online (Sandbox Code Playgroud)

但这在sed中没有,留下换行:

sed -i 's/\r//g'
Run Code Online (Sandbox Code Playgroud)

这似乎没有效果:

sed -i 's/\r\n//g'
Run Code Online (Sandbox Code Playgroud)

在sed表达式中使用^ M(ctrl + v,ctrl + m)似乎也不起作用.

对于这类任务,sed更容易理解,但我正在努力学习更多两者.我不正确使用sed,还是有限制?

linux awk sed

29
推荐指数
4
解决办法
7万
查看次数

使用Awk提取子字符串

给定格式为的主机名aaa0.bbb.ccc,我想在之前提取第一个子字符串.,也就是说,aaa0在这种情况下.我使用以下awk脚本来执行此操作,

echo aaa0.bbb.ccc | awk '{if (match($0, /\./)) {print substr($0, 0, RSTART - 1)}}'
Run Code Online (Sandbox Code Playgroud)

当在一台机器上运行的脚本A生成时aaa0,在机器上运行B只生成aaa,而0不是最终.两台机器运行Ubuntu/Linaro,但A运行较新版本的awk(版本3.1.8 gawk,而B旧版awk(版本1.2的mawk)

我总体上问,如何编写执行相同功能的兼容awk脚本...

bash awk

29
推荐指数
3
解决办法
10万
查看次数

如何在模式之前和行号之后使用sed插入一行?

如何sed在模式之前和行号之后使用行插入文件?以及如何在shell脚本中使用相同的内容?

这会在每行前面插入一行代码:

sed '/Sysadmin/i \ Linux Scripting' filename.txt
Run Code Online (Sandbox Code Playgroud)

这会使用行号范围更改此值:

sed '1,$ s/A/a/'
Run Code Online (Sandbox Code Playgroud)

那么现在如何使用这些(我不能)sed在模式之前和行号或其他方法之后使用行插入文件?

unix shell awk sed

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

使用Bash的两个列表之间的差异

好的,我的linux文件夹中有两个相关的列表:

 /tmp/oldList
 /tmp/newList
Run Code Online (Sandbox Code Playgroud)

我需要比较这些列表以查看添加了哪些行以及删除了哪些行.然后我需要遍历这些行并根据它们是否被添加或删除对它们执行操作.

我怎么在bash中这样做?

sorting bash awk grep sed

28
推荐指数
3
解决办法
3万
查看次数

从毫升命令行转换毫秒时间戳到日期

我知道

date -d @<timestamp in seconds>
Run Code Online (Sandbox Code Playgroud)

awk '{print strftime("%c", <timestamp in seconds>)}'
Run Code Online (Sandbox Code Playgroud)

但是如果我有毫秒的话呢?在没有删除毫秒时间戳的最后三个字符的情况下,有没有简单的方法可以做到这一点(不是说丢失字符是困难的,但我认为这样一个简单的任务会有一步一步)?

unix awk date

28
推荐指数
3
解决办法
3万
查看次数

如何在bash中提取字符串的最后一部分?

我有变量:

A="Some variable has value abc.123"
Run Code Online (Sandbox Code Playgroud)

我需要提取这个值,即abc.123.在bash中这可能吗?

string bash awk

28
推荐指数
6
解决办法
4万
查看次数

使用sed从文件中删除^ M个字符

我在文件中有这一行:

ULNET-PA,client_sgcib,broker_keplersecurities
,KEPLER
Run Code Online (Sandbox Code Playgroud)

我试图摆脱^ M(回车)字符,所以我使用:

sed 's/^M//g'
Run Code Online (Sandbox Code Playgroud)

但是这确实删除了^ M后的所有内容:

[root@localhost tmp]# vi test
ULNET-PA,client_sgcib,broker_keplersecurities^M,KEPLER

[root@localhost tmp]# sed 's/^M//g' test
ULNET-PA,client_sgcib,broker_keplersecurities
Run Code Online (Sandbox Code Playgroud)

我想要获得的是:

[root@localhost tmp]# vi test
ULNET-PA,client_sgcib,broker_keplersecurities,KEPLER
Run Code Online (Sandbox Code Playgroud)

awk sed

28
推荐指数
4
解决办法
7万
查看次数

删除文本流中的第一个单词

如何从流中的每行文本中删除第一个单词?即

$cat myfile 
some text 1
some text 2
some text 3
Run Code Online (Sandbox Code Playgroud)

我想要的是什么

$cat myfile | magiccommand 
text 1
text 2
text 3
Run Code Online (Sandbox Code Playgroud)

我怎么用bash来解决这个问题呢?我可以使用awk'{print $ 2 $ 3 $ 4 $ 5 ....}'但这很麻烦,会导致所有空参数的额外空格.我当时认为sed可能会这样做,但我找不到任何这方面的例子.任何帮助表示赞赏!谢谢!

bash awk sed cat

27
推荐指数
4
解决办法
5万
查看次数

如何使用awk命令将查找输出写入同一文件

awk '/^nameserver/ && !modif { printf("nameserver 127.0.0.1\n"); modif=1 } {print}' testfile.txt
Run Code Online (Sandbox Code Playgroud)

它正在显示输出,但我想将输出写入同一文件.在我的例子中testfile.txt.

bash shell awk

27
推荐指数
5
解决办法
3万
查看次数

标签 统计

awk ×10

sed ×6

bash ×5

linux ×2

shell ×2

unix ×2

cat ×1

date ×1

grep ×1

replace ×1

sorting ×1

string ×1