Articles of bash

将CSV中的第三个字段与GNU Linux(AWK / SED / GREP)中的模式文件进行匹配

当第三个字段与模式文件中的模式匹配时,我需要在CSV文件中打印所有行。 我已经尝试grep没有运气,因为它与任何领域不仅匹配第三。 grep -f FILE2 FILE1 > OUTPUT FILE1 dasdas,0,00567,1,lkjiou,85249 sadsad,1,52874,0,lkjiou,00567 asdasd,0,85249,1,lkjiou,52874 dasdas,1,48555,0,gfdkjh,06793 sadsad,0,98745,1,gfdkjh,45346 asdasd,1,56321,0,gfdkjh,47832 FILE2 00567 98745 45486 54543 48349 96349 56485 19615 56496 39493 正确的输出 dasdas,0,00567,1,lkjiou,85249 sadsad,0,98745,1,gfdkjh,45346 错误的输出 dasdas,0,00567,1,lkjiou,85249 sadsad,1,52874,0,lkjiou,00567 <—- I don't want this to appear sadsad,0,98745,1,gfdkjh,45346 我已经到处search,尝试不同的公式。 编辑:感谢Wintermute,我设法写这样的事情: csvquote file1.csv > file1.csv awk -F '"' 'FNR == NR { patterns[$0] = […]

Bash printf前缀

在Bash中,我可以使用printf来格式化一个string输出,如下所示: – (注意我为string添加了一个后缀W ,这不包括在填充中) $ printf "Blah %11.1fW\n" 123 456 78965 5 56 Blah 123.0W Blah 456.0W Blah 78965.0W Blah 5.0W Blah 56.0W 如果我想在string前缀,我可以这样做: – $ printf "Blah £%11.1f\n" 123 456 78965 5 56 Blah £ 123.0 Blah £ 456.0 Blah £ 78965.0 Blah £ 5.0 Blah £ 56.0 但是请注意,这是如何在前缀之前应用填充的。 如何(如果可能的话)我会使用printf来填充前的值,所以输出如下: – Blah £ 123.0 […]

需要ps的pri标准格式说明符的解释 – 可能在文档中的错误

ps手册页上的pri注释: “pri优先级的过程。更高的数字意味着更低的优先级” 在这里考虑PID 26073 $ renice +15 26073 26073: old priority 5, new priority 15 # I am making this process more nice $ ps -t 1 -o pid,ppid,%cpu,stat,cmd,bsdstart,time,pri PID PPID %CPU STAT CMD START TIME PRI 9115 18136 0.0 Ss bash 17:10 00:00:01 19 26073 9115 12.0 RN+ p4 sync 19:06 00:02:56 4 STAT […]

Ansible:将一个唯一的文件复制到组中的每个服务器

我有一系列编号的文件由每个服务器分别处理。 每个拆分文件使用Linux拆分,然后xz压缩以节省传输时间。 split_001 split_002 split_003 … split_030 我怎样才能将这些文件推送到一个有30个服务器的组中? 只要每个服务器都有一个唯一的文件,哪个服务器获取哪个文件并不重要。 我使用了一个bash文件,但我正在寻找一个更好的解决scheme。 希望使用可靠的。 然后我打算运行一个shell命令来运行at命令来启动几个小时或几天的计算。 scp -oStrictHostKeyChecking=no bt_5869_001.xz usr13@<ip>:/data/ scp -oStrictHostKeyChecking=no bt_5869_002.xz usr13@<ip>:/data/ scp -oStrictHostKeyChecking=no bt_5869_003.xz usr13@<ip>:/data/ … http://docs.ansible.com/ansible/copy_module.html # copy file but iterate through each of the split files – copy: src=/mine/split_001.xz dest=/data/split_001.xz – copy: src=/mine/compute dest=/data/ owner=root mode=0755 – copy: src=/mine/start.sh dest=/data/ owner=root mode=0755 – shell: […]

有条件的Awk hashmap匹配查找

我有2个表格文件。 一个文件包含一个名为lookup_file.txt的50个键值的映射。 另一个文件具有30列和数百万行的实际表格数据。 data.txt我想用lookup_file.txt中的值replace第二个文件的id列。 。 我怎样才能做到这一点? 我宁愿在bash脚本中使用awk。另外,有没有一个hashmap数据结构,我可以在bash中用来存储50个键/值而不是另一个文件?

ssh命令输出保存在shell脚本中的文本文件中

我想编写shell脚本,其中我使用ssh命令。 无论输出,我将通过SSH命令获得我想保存在文本文件或varibale,所以我可以在我的shell脚本中使用此。 目前我输出保存在一个variables,但是当我在ssh命令之外使用该variables时,值显示为空白。 代码是 ssh hostname -c "' `pwd`; var=$(ps -ef | grep Consumer | cut -f6 -d' ') '"; echo $?; echo "vbar $var"; 当我打印时,var值是空的。

从Java运行linux脚本

我有以下的Java代码 ArrayList<String> argList = new ArrayList<>(); argList.add("Hello"); argList.add("World"); String[] args = argList.toArray(new String[argList.size()]); Process p =Runtime.getRuntime().exec("echo '$1 $2' ", args); 结果是$1 $2但是我想打印Hello World 。 有谁能够帮助我?

将一个月中的bash脚本调用更改为一周

我在bash中有两个脚本,我有一些文件: transaction-2012-01-01.csv.bz2 transaction-2012-01-02.csv.bz2 transaction-2012-01-03.csv.bz2 transaction-2012-01-04.csv.bz2 . . transaction-2012-01-31.csv.bz2 transaction-2012-02-01.csv.bz2 . . transaction-2012-02-28.csv.bz2 我有一个脚本叫script.sh cat script.sh YEAR_MONTH=$1 FILEPATH="transaction-$YEAR_MONTH*.csv.bz2" bzcat $FILEPATH|strings|grep -v "code" >> output 如果你需要调用脚本,你可以使用其他脚本 cat script2.sh LAST_MONTH=$(date -d -1month +%Y"-"%m) if [ $# -eq 1 ]; then DATE=$1 else DATE=$LAST_MONTH fi script.sh $DATE 1>output$DATE.csv 2>> log.txt 它在一个月内捕获这些文件,但是现在我需要在一年中的特定一周内调用脚本: bash script2.sh 2012-01 其中2012是一年,01是一个月 现在我需要调用脚本: bash script2.sh 2012 […]

如何在Python中使用bashvariables

在bash中,我可以在bash中执行此操作IP=$(wget -qO- ipinfo.io/ip)这将捕获我的公有IP并将其作为variables$ IP存储在我的Raspberry Pi上。 现在我想在python中捕获这个variables,使得当$IP不等于82.1x.xxx.xx时,连接到GPIO 1的led灯亮。 我是一个Python新手,所以我需要一些帮助,我有很less的知识在Python中,但在bash非常好的知识。 任何帮助或build议将不胜感激。 先谢谢你。

linux脚本运行c程序

我试图运行在Linux脚本运行AC程序的脚本如下 #!/bin/bash `gcc odd.c -o odd222` `chmod +x odd222` echo `./odd222` odd.c是 main() { int i; printf("enter the no."); scanf("%d",&i); printf("shiv"); } 但问题是,当我运行这个脚本的所有scanf语句执行,然后所有的输出显示simentaniously …. 如果我不把回声之前./odd222那么它说错误input命令没有find(“input”printf的第一个元素。 请帮助我