标签: awk

awk中的字符串比较

我需要按字母顺序比较两个字符串,而不仅仅是相等测试.我想知道有没有办法在awk中进行字符串比较?

string syntax awk

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

bash:如何连接两个命令的输出,以便我可以将它们连接到第三个?

$ hg status
Run Code Online (Sandbox Code Playgroud)

$ hg status --ignored
Run Code Online (Sandbox Code Playgroud)

给出非常相似的输出.我想连接它们以便我可以将它们提供给awk,好像有一个hg状态--all(或svn的svn状态--no-ignore)

我想的是:

$ echo "$(hg status)" "$(hg status --ignored)" | awk  ' ( $1 == "?" ) || ( $1 == "I") { print $2 }' | xargs rm -r
Run Code Online (Sandbox Code Playgroud)

制作一个"确实非常干净"的命令,但它似乎偶尔会留下一个文件,可能是因为新行缺失或其他东西.

bash shell mercurial awk concatenation

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

就地更换

我有一个CSV.我想编辑CSV的第35个字段并将更改写回第35个字段.这就是我在bash上所做的事情:

awk -F "," '{print $35}' test.csv  | sed -i 's/^0/+91/g'
Run Code Online (Sandbox Code Playgroud)

所以,我使用awk拉出第35个条目,然后用"+91"替换字符串中起始位置的"0".这个工作perfet我在控制台上获得所需的输出.

现在我想要将这个新条目写入文件中.我正在考虑sed的"in -place"替换功能,但这个胎儿需要和输入文件.在上面的命令中,我无法提供输入文件,因为我的主命令是awk而sed正在从awk获取输入.

谢谢.

awk sed

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

如何在正则表达式中使用awk变量?

我有一个名为domain的文件,其中包含一些域名.例如:

google.com
facebook.com
...
yahoo.com
Run Code Online (Sandbox Code Playgroud)

我有另一个名为site的文件,其中包含一些网站的URL和数字.例如:

image.google.com   10
map.google.com     8
...
photo.facebook.com  22
game.facebook.com   15
..
Run Code Online (Sandbox Code Playgroud)

现在我要计算每个域名的网址号.例如:google.com10 + 8.所以我写了一个像这样的awk脚本:

BEGIN{
  while(getline dom < "./domain" > 0) {
    domain[dom]=0;
  }
  for(dom in domain) {
    while(getline < "./site" > 0) {
      if($1 ~/$dom$)   #if $1 end with $dom {
        domain[dom]+=$2;
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但代码if($1 ~/$dom$)并不像我想的那样运行.因为正则表达式中的变量$ dom是按字面解释的.所以,第一个问题是:

有没有办法$dom在正则表达式中使用变量?

然后,因为我刚开始编写脚本

有没有更好的方法来解决我的问题?

regex awk

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

如何用awk在每行的末尾添加一个字符?

我想A在文本文件的每一行的末尾添加字符.我怎么能用awk做到这一点?

1AAB
VBNM
JHTF
2SDA
Run Code Online (Sandbox Code Playgroud)

期望的输出

1AABA
VBNMA
JHTFA
2SDAA
Run Code Online (Sandbox Code Playgroud)

awk

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

如何在awk中初始化数组数组?

是否可以在AWK中初始化这样的数组?

Colors[1] = ("Red", "Green", "Blue")
Colors[2] = ("Yellow", "Cyan", "Purple")
Run Code Online (Sandbox Code Playgroud)

然后有一个二维数组,其中Colors [2,3] ="Purple".


另一个线程我明白这是不可能的("遗憾的是,没有办法在不滥用split()的情况下一次设置一个数组").无论如何,我想100%肯定,我确信还有其他人有同样的问题.

我正在寻找最简单的方法来初始化像上面那样的数组,将它编写得很好.

arrays awk initialization

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

如何使用 shell 转换为日期格式 (DD MMM YYYY)?

我在一个文件中有数据,其中一列是日期列,其日期格式如下:

2021-05-10T18:25:00.000+0100
2021-05-14T18:25:00.000+0100
2021-05-19T18:25:00.000+0100
Run Code Online (Sandbox Code Playgroud)

预期输出为:

10 MAY 2021
14 MAY 2021
19 MAY 2021
Run Code Online (Sandbox Code Playgroud)

我尝试过的方法:

while -r read line
do
    year=`echo $line | awk '{ print $1 }' `
    month=`echo $line | awk '{ print $2 }' `
    dt=`echo $line | awk '{ print $3 }' `

    v=$dt"-"$month"-"$year
    d=date '`$v' | dd-mm-yyyy
    echo $d
done < /f/filename.txt
Run Code Online (Sandbox Code Playgroud)

shell awk

25
推荐指数
6
解决办法
1924
查看次数

awk可以处理在引用字段中包含逗号的CSV文件吗?

我使用awk来计算csv文件中一列的总和.数据格式如下:

id, name, value
1, foo, 17
2, bar, 76
3, "I am the, question", 99
Run Code Online (Sandbox Code Playgroud)

我使用这个awk脚本来计算总和:

awk -F, '{sum+=$3} END {print sum}'
Run Code Online (Sandbox Code Playgroud)

name字段中的某些值包含逗号,这会破坏我的awk脚本.我的问题是:能解决这个问题吗?如果是的话,我该怎么做?

谢谢.

csv awk field quoting text-parsing

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

如何截断实数值并丢弃其在awk中的非整数部分?

我有以下数据集(所有正值)

输入文件

1 2.3456
1 5.02
2 3.9763333
2 0.123
Run Code Online (Sandbox Code Playgroud)

我想截断第二列中的数字并丢弃其非整数部分.

怎么会在awk中做到这一点?

期望的输出文件

1 2
1 5
2 3
2 0
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

awk

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

按列消除部分重复的行并保留最后一行

我有一个看起来像这样的文件:

2011-03-21 name001 line1
2011-03-21 name002 line2
2011-03-21 name003 line3
2011-03-22 name002 line4
2011-03-22 name001 line5
Run Code Online (Sandbox Code Playgroud)

对于每个名字,我只想要它的最后一次出现.所以,我希望结果如下:

2011-03-21 name003 line3
2011-03-22 name002 line4
2011-03-22 name001 line5
Run Code Online (Sandbox Code Playgroud)

有人可以用bash/awk/sed给我一个解决方案吗?

bash awk text-processing sed

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