我想随机洗牌文本文件的行,并创建一个新文件。该文件可能有几千行。

我如何用cat, awk, cut等做到这一点?

给定以下命令,

echo "1: " | awk '/1/ -F ":" {print $1}'

为什么AWK输出:

1:

?

我找到了一些方法来传递外部shell变量到awk脚本,但我对“和”感到困惑。

首先,我尝试了一个shell脚本:

$ v=123test
$ echo $v
123test
$ echo "$v"
123test

然后试试awk:

$ awk 'BEGIN{print "'$v'"}'
$ 123test
$ awk 'BEGIN{print '"$v"'}'
$ 123

为什么会有这样的区别呢?

最后我尝试了这个:

$ awk 'BEGIN{print " '$v' "}'
$  123test
$ awk 'BEGIN{print ' "$v" '}'
awk: cmd. line:1: BEGIN{print
awk: cmd. line:1:             ^ unexpected newline or end of string 

我对此感到困惑。

这一行一直工作到第二个字段中出现空白。

svn status | grep '\!' | gawk '{print $2;}' > removedProjs

有没有办法让awk打印所有2美元或更大的东西?(3、4美元. .直到我们不再有专栏了?)

我想我应该补充一点,我正在使用Cygwin在Windows环境中执行此操作。

我使用jq解析一个JSON文件,如下所示。然而,字符串值的结果如预期的那样包含“双引号”,如下所示:

$ cat json.txt | jq '.name'
"Google"

我如何将此管道到另一个命令来删除“”?所以我得到

$ cat json.txt | jq '.name' | some_other_command
Google

我可以使用什么some_other_command ?

awk的区别是什么 sed呢? 什么样的应用最好用 sed和awk工具的案例?

我经常需要在编程期间终止一个进程。

我现在的做法是:

[~]$ ps aux | grep 'python csp_build.py'
user    5124  1.0  0.3 214588 13852 pts/4    Sl+  11:19   0:00 python csp_build.py
user    5373  0.0  0.0   8096   960 pts/6    S+   11:20   0:00 grep python csp_build.py
[~]$ kill 5124

如何自动提取进程id并在同一行中杀死它?

是这样的:

[~]$ ps aux | grep 'python csp_build.py' | kill <regex that returns the pid>

有没有一种“规范”的方法?我一直在使用head-n|tail-1来完成这个任务,但我一直在想是否有一个Bash工具专门从文件中提取一行(或一系列行)。

我所说的“规范”是指一个主要功能就是这样做的程序。

我如何查找并替换每次出现的:

subdomainA.example.com

具有

subdomainB.example.com

递归地在/home/www/目录树下的每个文本文件中?