小编Avi*_*Raj的帖子

用 sed 中的换行符替换 \n

我对 GNU sed、 POSIXsed和 BSDsed的无数选项感到很困惑。如何\n使用这三种sed类型用换行符替换文字?

sed newlines

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

仅删除双引号内的逗号

在文本文件中,我想删除,(逗号)和"(引号)(仅当双引号包含以逗号分隔的数字时)。

56,72,"12,34,54",x,y,"foo,a,b,bar"
Run Code Online (Sandbox Code Playgroud)

预期输出

56,72,123454,x,y,"foo,a,b,bar"
Run Code Online (Sandbox Code Playgroud)

注意:我显示上面的行只是作为一个例子。我的文本文件包含多行如上,双引号中用逗号分隔的数字应该有所不同。那是,

56,72,"12,34,54",x,y,"foo,a,b,bar"
56,92,"12,34",x,y,"foo,a,b,bar"
56,72,"12,34,54,78,76,54,67",x,y,"foo,a,b,bar"
56,72,x,y,"foo,a,b,bar","12,34,54"
56,72,x,y,"foo,a,b,bar","12,34,54","45,57,84,92","bar,foo"
Run Code Online (Sandbox Code Playgroud)

预期输出:

56,72,123454,x,y,"foo,a,b,bar"
56,92,1234,x,y,"foo,a,b,bar"
56,72,12345478765467,x,y,"foo,a,b,bar"
56,72,x,y,"foo,a,b,bar",123454
56,72,x,y,"foo,a,b,bar",123454,45578492,"bar,foo"
Run Code Online (Sandbox Code Playgroud)

n双引号内有许多数字,以逗号分隔。并且还保留包含字符的双引号。

我喜欢sed文本处理工具。如果您sed为此发布任何解决方案,我很高兴。

sed text-processing csv

11
推荐指数
3
解决办法
1万
查看次数

Unix 中的 For 循环:包括来自子目录的文件

Unix 中的一个简单 for 循环是:

for FILE in $BASE_WORK_DIR/*.pdf
   do
     echo $FILE
   done
Run Code Online (Sandbox Code Playgroud)

这将回.pdf显 BASE_WORK_DIR 目录中的所有文件。

如果还BASE_WORK_DIR包含子目录,其中也包含 pdf 文件怎么办。

在这种情况下,我如何设计我的 for 循环来获取所有 pdf 文件BASE_WORK_DIR以及子目录BASE_WORK_DIR

for

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

getline 在 awk 中做什么?

我有以下awk脚本,它采用以下输入文件,input.txt并生成以下输出。有人可以花点时间分解一下这个awk脚本是如何工作的吗?我花了一些时间在它上面,但它没有多大意义。


输入:

$ cat input.txt

FINISHED
RSYNCJOBNA
20140502 0021 2182096 2082096 6 5
2014820905820902 10:02:15
2014820905820902 10:56:42
0:54:27

INITIATED
RSYNCJOBNA
20140502 0022 3282096 3182096 6 5
2014820905820902 15:31:06
0:06:04 ce eque**
Run Code Online (Sandbox Code Playgroud)

输出:

RSYNCJOBNA|0021|20140502|10:02:15|10:56:42|0:54:27|FINISHED
RSYNCJOBNA|0022|20140502|15:31:06|        |0:06:04|INITIATED
Run Code Online (Sandbox Code Playgroud)

获取上述输出的命令:

awk -v OFS='|' '/FINISHED|INITIATED/ {
        status = $1; getline;
        jobname = $1; getline;
        sequence = $2; date = $1; getline;
        start = $2; getline;
        if (status == "FINISHED") { end = $2; getline } else { end = …
Run Code Online (Sandbox Code Playgroud)

awk

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

awk 命令中的 getline 是否可以安全使用?

我在awk使用该getline功能的SO上发布答案时得到了奇怪的评论。 是该答案的链接。

发布我的答案后,一位用户提出了以下评论,(我不批评他。

不是一个好的解决方案,无论内容如何,​​它都会加入行,并且在需要时不处理更多行。你应该避免使用 getline。

它指出,我们应该避免getline的功能awk。所以我的问题是,

  • getline在 awk 中使用函数安全吗?
  • 什么情况下应该使用getline,什么情况下不应该使用?
  • 如果这个函数产生了意想不到的结果,那么我们为什么不提交错误报告呢?

awk

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

在 /home 和 /home/$USER 目录中创建目录有什么区别?

我想在/home目录内创建一个文件夹,在目录内创建另一个文件夹/home/$USER。同一系统上的其他用户是否可以访问/home目录中的文件夹 ?

/home目录中创建文件夹有什么缺点吗?

在 /home 和 /home/$USER 目录中创建目录有什么区别?

command-line

1
推荐指数
1
解决办法
455
查看次数

如何通过perl删除特定行中的换行符?

我想通过 perl one-liner 命令删除特定行中的换行符。

输入:

1407233497,1407233514,bar
1407233498,1407233515,foo
mingstats&fmt=n
1407233499,1407233516,foobar
Run Code Online (Sandbox Code Playgroud)

预期输出:

1407233497,1407233514,bar
1407233498,1407233515,foomingstats&fmt=n
1407233499,1407233516,foobar
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试了什么?

此正则表达式\n(?!\d+,\d+)与我要删除的换行符完全匹配。但我不知道如何通过 perl one-liner 命令实现它。我试过,

perl -pe 's/\n(?!\d+,\d+)//g' file
Run Code Online (Sandbox Code Playgroud)

但它删除了该文件中的所有换行符,最后在一行中打印以下内容,

1407233497,1407233514,bar1407233498,1407233515,foomingstats&fmt=n1407233499,1407233516,foobar
Run Code Online (Sandbox Code Playgroud)

如果 perl one-liner 命令使用上面的正则表达式,我会很高兴...

perl regular-expression

1
推荐指数
1
解决办法
5894
查看次数