标签: awk

如何使用argv使用AWK打印文本文件的第N列

假设我有一个文本文件,其中的数据由空格分隔成列.我想编写一个shell脚本,它将文件名和数字N作为输入,只打印出该列.使用awk我可以执行以下操作:

awk < /tmp/in '{print $2}' > /tmp/out
Run Code Online (Sandbox Code Playgroud)

此代码打印出第二列.

但是如何在shell脚本中包装它以便在argv中传递任意列?

unix awk

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

用于清理数据的Python或awk/sed

我使用R进行数据分析,对此非常满意.但是,清洁数据可能会更容易一些.我正在考虑学习适合这项任务的另一种语言.具体来说,我正在寻找一种工具,用于获取原始数据,删除不必要的变量或观察,并格式化它以便在R中轻松加载.内容主要是数字和字符串数据,而不是多行文本.

我正在考虑awk/sed组合与Python.(我认识到Perl将是另一种选择,但是,如果我要学习另一种完整语言,Python似乎是一种更好,更可扩展的选择.)

sed/awk的优点是学习起来会更快.缺点是这种组合不像Python那样可扩展.事实上,如果我学习Python,我可能会想象一些"任务蔓延",这很好,但不是我的目标.

我的另一个考虑因素是大数据集的应用程序.据我所知,awk/sed逐行操作,而Python通常会将所有数据都拉入内存.这可能是sed/awk的另一个优势.

我还缺少其他问题吗?您可以提供的任何建议将不胜感激.(我为R用户提供了R标签,以提供他们的清洁建议.)

python awk r sed data-cleaning

26
推荐指数
3
解决办法
4134
查看次数

mysqldump与db在一个单独的文件中

我正在编写一个单行命令,它将所有数据库备份到各自的名称中,而不是使用在一个sql中转储所有数据库.

例如:db1保存到db1.sql,db2保存到db2.sql

到目前为止,我收集了以下命令来检索所有数据库.

mysql -uuname -ppwd -e 'show databases' | grep -v 'Database'
Run Code Online (Sandbox Code Playgroud)

我打算用awk来管它做类似的事情

awk '{mysqldump -uuname -ppwd $1 > $1.sql}'
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

我是bash的新手,所以我的想法可能是错的.
我该怎么做才能让它以各自的名义导出数据库?

更新:
好的,必须最终设法让它从下面的提示工作.
这是最后的脚本

# replace [] with your own config
# replace own dir to save
# echo doesn't work. hmm...

mysql -u[uname] -p'[pwd]' -e "show databases" \
| grep -Ev 'Database|information_schema' \
| while read dbname; \
do \
echo 'Dumping $dbname' \
mysqldump -u[uanme] -p'[pwd]' $dbname > ~/db_backup/$dbname.sql;\
done
Run Code Online (Sandbox Code Playgroud)

回声部分虽然不起作用.

bash backup awk mysqldump

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

将awk输出保存到变量

任何人都可以帮我解决这个问题吗?

我正在尝试将awk输出保存到变量中.

variable = `ps -ef | grep "port 10 -" | grep -v "grep port 10 -"| awk '{printf "%s", $12}'`
printf "$variable"
Run Code Online (Sandbox Code Playgroud)

编辑:$ 12对应于在该进程上运行的参数.

谢谢!

linux bash shell awk centos

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

如何让awk忽略双引号内的字段分隔符?

我需要在逗号分隔值文件中删除2列.请考虑csv文件中的以下行:

"abc@xyz.com,www.example.com",field2,field3,field4
"def@xyz.com",field2,field3,field4
Run Code Online (Sandbox Code Playgroud)

现在,我想要的结果是:

"abc@xyz.com,www.example.com",field4
"def@xyz.com",field4
Run Code Online (Sandbox Code Playgroud)

我使用以下命令:

awk 'BEGIN{FS=OFS=","}{print $1,$4}'
Run Code Online (Sandbox Code Playgroud)

但是引号内的嵌入式逗号会产生问题,以下是我得到的结果:

"abc@xyz.com,field3
"def@xyz.com",field4
Run Code Online (Sandbox Code Playgroud)

现在我的问题是如何让awk忽略双引号内的","?

bash shell awk

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

使用sed替换/使用TAB

我需要使用选项卡替换斜杠字符,以便使用awk提取目录名称.

/path/to/some/USEFUL_INFORMATION/in/some/path
Run Code Online (Sandbox Code Playgroud)

我尝试过这样做,但它所做的只是在我的输出中加上"t".

sed -e 's/\//\t/g' filename
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

awk sed

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

awk将双引号字符串视为一个标记,并忽略其间的空格

数据文件 - data.txt:

ABC "I am ABC" 35 DESC
DEF "I am not ABC" 42 DESC
Run Code Online (Sandbox Code Playgroud)

cat data.txt | awk '{print $2}'

将导致"I"而不是被引用的字符串

如何制作awk以便忽略引号中的空格并认为它是一个单一的令牌?

unix bash awk

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

如何删除awk中的科学记数法?

在下面的awk命令中

 awk '{sum+=$1; ++n} END {avg=sum/n; print "Avg monitoring time = "avg}' file.txt
Run Code Online (Sandbox Code Playgroud)

我应该更改什么来删除科学记数法输出(非常小的值显示为1.5e-05)?

我无法使用OMFT变量成功.

awk

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

打印AWK分隔的AWK所有字段

有没有办法打印OFS分隔的所有记录而不输入每个列号.

#Desired style of syntax, undesired result
[kbrandt@glade: ~] echo "1 2 3 4" | gawk 'BEGIN { OFS=" :-( "}; {print $0}'        
1 2 3 4

#Desired result, undesired syntax
[kbrandt@glade: ~] echo "1 2 3 4" | gawk 'BEGIN { OFS=" :-) "}; {print $1,$2,$3,$4}'
1 :-) 2 :-) 3 :-) 4
Run Code Online (Sandbox Code Playgroud)

awk gawk

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

使用awk查找分隔符后第一次出现的字符串

我有一堆文件,所有文件都Account number: 123456789在不同的位置.

我需要做的是能够解析文件,并找到帐号本身.因此,awk需要寻找Account number:并立即返回字符串.

例如,如果是:

Account number: 1234567
Run Code Online (Sandbox Code Playgroud)

awk 应该返回:

1234567
Run Code Online (Sandbox Code Playgroud)

一旦发现它第一次出现就可以停止寻找.

但是,我很难过.使用这种方法的正确方法是什么awk

bash awk

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

标签 统计

awk ×10

bash ×5

sed ×2

shell ×2

unix ×2

backup ×1

centos ×1

data-cleaning ×1

gawk ×1

linux ×1

mysqldump ×1

python ×1

r ×1