我有包含单列和两列的数据行.我想要做的是提取只包含2列的行.
0333 foo
bar
23243 qux
Run Code Online (Sandbox Code Playgroud)
只屈服:
0333 foo
23243 qux
Run Code Online (Sandbox Code Playgroud)
请注意,它们是制表符分隔的,即使对于只有一列的行,您在开头有选项卡.
这样做的方法是什么?
我试过这个却失败了:
awk '$1!="";{print $1 "\t" $2}' myfile.txt
enter code here
Run Code Online (Sandbox Code Playgroud) 我有一个以逗号分隔的数字列表:
123711184642,02,3583090366663629,639f02012437d4
123715942138,01,3538710295145500,639f02afd6c643
123711616258,02,3548370476972758,639f0200485732
Run Code Online (Sandbox Code Playgroud)
我需要将第3列拆分为3,如下所示:
123711184642,02,3583090366663629,639f02,0124,37d4
123715942138,01,3538710295145500,639f02,afd6,c643
123711616258,02,3548370476972758,639f02,0048,5732
Run Code Online (Sandbox Code Playgroud)
并将最后两列中的数字转换为十进制:
123711184642,02,3583090366663629,639f02,292,14292
123715942138,01,3538710295145500,639f02,45014,50755
123711616258,02,3548370476972758,639f02,72,22322
Run Code Online (Sandbox Code Playgroud) 我想通过awk计算表中的所有记录,但是NR打印所有记录的记录,而不是总计数.我甚至尝试过:
NF==4,count++{print count}
Run Code Online (Sandbox Code Playgroud)
但它不能正常工作我怎么能通过awk做到这一点?
我有一个单词列表
name,id,3
Run Code Online (Sandbox Code Playgroud)
我需要像这样双引号
"name,id,3"
Run Code Online (Sandbox Code Playgroud)
我试过sed的/.*/\"&\"/g',得到了
"name,id,3
Run Code Online (Sandbox Code Playgroud)
只有一个双引号
我也试过awk {print"\""$ 1"\""},结果完全相同需要帮助
我有以下文件party.txt,其中包含以下内容:
Hello Jacky
Hello Peter
Bye Johnson
Hello Willy
Bye Johnny
Hello Mary
Hello Wendy
Run Code Online (Sandbox Code Playgroud)
我用它grep hello来捕获包含但是当我使用print date +"%Y-%m-%d'它并附加到它时,我不能和我0每行会得到很多.
cat party.txt | grep Hello | awk '{ print date +"%Y-%m-%d"}'
Run Code Online (Sandbox Code Playgroud)
我能错过什么?
我想awk使用整数除法将两个数字分开,即截断结果.例如
k = 3 / 2
print k
Run Code Online (Sandbox Code Playgroud)
应该打印 1
根据手册,
师; 因为awk中的所有数字都是浮点数,结果不会舍入为整数
有没有解决方法来获取整数值?
原因是我想得到一个带有整数索引[0到num-1] 的数组的中间元素.
我正在尝试为我编写一个复杂的脚本,我的目标是执行以下操作.我有一个字符串进来,看起来像这样:
2012 2013 "multiple words"
Run Code Online (Sandbox Code Playgroud)
我的目标是将每个这些放入由空格分割的数组中,但仅用于单个字匹配,而不是用双引号括起来的那些.那些应该被认为是一个词.所以我的想法是分两步完成.首先匹配那些是倍数的单词,从字符串中删除那些,然后在由空格分割的另一个迭代中.
很遗憾,我无法找到有关如何进行echo比赛的帮助.到目前为止我有这个:
array=$(echo $tags | sed -nE 's/"(.+)"/\1/p')
Run Code Online (Sandbox Code Playgroud)
但这会导致(在OS X上):
2012 2013 multiple words
Run Code Online (Sandbox Code Playgroud)
预期结果:
array[1]="2012"
array[2]="2013"
array[3]="multiple words"
Run Code Online (Sandbox Code Playgroud)
我该如何处理这类问题?
谢谢.
我有一个'file.dat',包含24(行)x 16(列)数据.
我已经测试了以下awk脚本来计算每列的平均值.
touch aver-std.dat
awk '{ for (i=1; i<=NF; i++) { sum[i]+= $i } }
END { for (i=1; i<=NF; i++ )
{ printf "%f \n", sum[i]/NR} }' file.dat >> aver-std.dat
Run Code Online (Sandbox Code Playgroud)
输出'aver-std.dat'有一列具有这些平均值.
与平均计算类似,我想计算数据文件'file.dat'的每列的标准偏差,并将其写入输出文件的第二列.即我想要一个输出文件,其中第一列中的平均值和第二列中的标准差.
我一直在进行不同的测试,比如这个
touch aver-std.dat
awk '{ for (i=1; i<=NF; i++) { sum[i]+= $i }}
END { for (i=1; i<=NF; i++ )
{std[i] += ($i - sum[i])^2 ; printf "%f %f \n", sum[i]/NR, sqrt(std[i]/(NR-1))}}' file.dat >> aver-std.dat
Run Code Online (Sandbox Code Playgroud)
它会在第二列中写入值,但它们不是标准差的正确值.偏差的计算不正确.我非常感谢任何帮助.问候
awk输出看起来像:
awk '{print $2}'
toto
titi
tata
Run Code Online (Sandbox Code Playgroud)
我想在同一行中以空格作为分隔符而不是新行来显示awk的输出
awk [option] '{print $2}'
toto titi tata
Run Code Online (Sandbox Code Playgroud)
有可能吗?
这是test.txt:
0x01,0xDF,0x93,0x65,0xF8
0x01,0xB0,0x01,0x03,0x02,0x00,0x64,0x06,0x01,0xB0
0x01,0xB2,0x00,0x76
Run Code Online (Sandbox Code Playgroud)
如果我运行
awk -F, 'BEGIN{OFS=","}{$2="";print $0}' test.txt
结果是:
0x01,,0x93,0x65,0xF8
0x01,,0x01,0x03,0x02,0x00,0x64,0x06,0x01,0xB0
0x01,,0x00,0x76
Run Code Online (Sandbox Code Playgroud)
$2 没有被删除,它只是变空了。我希望在打印 $0 时,结果是:
0x01,0x93,0x65,0xF8
0x01,0x01,0x03,0x02,0x00,0x64,0x06,0x01,0xB0
0x01,0x00,0x76
Run Code Online (Sandbox Code Playgroud)