小编Mik*_*e Q的帖子

如何使用sed交换两列?

我正在尝试更改文件中的文本:

file.txt,c:\path\to\file
file.txt,c:\path with spaces\to\file
file.txt,c:\path\to\file with spaces
file.txt,c:\path\to\file with spaces
file.txt,c:\path\to\file with spaces
Run Code Online (Sandbox Code Playgroud)

对于这种输出(文件的一个路径):

c:\path\to\file\file.txt
c:\path with spaces\to\file\file.txt
c:\path\to\file with spaces\file.txt
c:\path\to\file with spaces\file.txt
c:\path\to\file with spaces\file.txt
Run Code Online (Sandbox Code Playgroud)

这个ALMOST有效,但在行尾需要',':

sed 's@\(.*\),\(.*\),\(.*\)@\2,\1,\3@g' file
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,我不知道这一切都很好...

编辑

这对我有用,但我还是想在其中添加一个"\":

sed 's@\(.*\),\(.*\)@\2,\1,\3@g' file
Run Code Online (Sandbox Code Playgroud)

sed

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

Bash 脚本检查图像是否为动画 png (apng)

试图在我的 bash 脚本中找出一种方法来检查文件是否是动画 PNG (apng) 文件。就我而言,如果是的话,我想忽略它。有任何想法吗 ?

更新:下面使用 pngcheck 的答案允许我检查图像是否是动画。另外,我检查文件的大小,如果它“大”,我也会忽略它。最后,截至 2017 年 11 月,“识别”不起作用,这主要是我最初的问题。感谢马克的帮助。

bash shell animation

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

如何仅获取 yum 更新列表

好吧,我一直有这个问题。我只想使用 yum 从 Linux 系统(RHEL 或 Fedora)通过 bash 脚本在文件中列出可用的更新,但我总是必须处理创建的标头信息,如下所示:

    Loaded plugins: XXXX-repo  XXXX-updates
                  : WWWWWW-repo  something-updates  QQQQQ-updates
     Updated packages
     package1.i686         1:234                  RHEL 6.5 updates
     package2.i686         1:234                  RHEL 6.5 updates
     package3.i686         1-234                  RHEL 6.5 updates
     package4.noarch       1.234                  RHEL 6.5 updates
Run Code Online (Sandbox Code Playgroud)

我想要的只是 package1、package2 等的列表,这看起来很简单,但事实并非如此,因为我不能只 grep 上“更新”或“:”。我是不是看错了?为什么我不想捕获脚本中发现的更新?我应该只更新并检查更新了什么吗?想法?

PS> 我无法使用 --noplugins 选项。

编辑:到目前为止我已经想出了这个,

     sudo yum check-update | grep "\." | awk '(NR >=1) {print $1;}' | grep '^[[:alpha:]]'
Run Code Online (Sandbox Code Playgroud)

基本上抓住其中有句点的行,即第一行,并确保它首先包含字母。也许做得有点过头了,但似乎有效。

bash yum

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

使用javascript将按钮添加到现有DIV

在我的页面上,我有:

 <div id='something'></div>
Run Code Online (Sandbox Code Playgroud)

我想使用JS将这种类型的“按钮”附加到它:

<a href="/news_events/"><span class="picon-p-add-news"></span>Read more news</a>
Run Code Online (Sandbox Code Playgroud)

我尝试使用document.createElement,但是我不确定如何使它不仅仅是将其附加为文本。我该怎么做呢 ?

javascript

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

按月份名称和日期排序.巴什

您好试图按月和日排序此列表.不能得到它的直言不讳.有什么指针吗?

列表示例:

Jul 23 Drive :NTFS (Windows 31.6 GB/29.4 GiB) Details : Mounted /dev/sdc1 (Read-Write, label "FreeAgent GoFlex Drive", NTFS 3.1)
Jul 30 Drive :NTFS (Windows 31.6 GB/29.4 GiB) Details : Mounted /dev/sdb1 (Read-Write, label "HP USB FD", NTFS 3.1)
Aug 2 Drive :NTFS (Windows 31.6 GB/29.4 GiB) Details : Mounted /dev/sdb1 (Read-Write, label "WINPART", NTFS 3.1)
Jul 24 Drive :EXT (Linux) Details : EXT3-fs (sdc1)
Jul 25 Drive :EXT (Linux) Details : EXT3-fs (sdb1)
Jul 27 Drive :EXT (Linux) …
Run Code Online (Sandbox Code Playgroud)

sorting bash

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

在批处理脚本中打印第二个令牌后的所有令牌

我正在寻找一种更清洁的方法来做到这一点.我很确定它是错的,即使它有点有用.基本上我从文件(temp.txt)中获取这样的输出:

    Host Name:                 IBM-3J93A46MRS5
    OS Name:                   Microsoft Windows 7 Professional 
    OS Version:                6.1.7631 Service Pack 1 Build 7601
    OS Configuration:          Standalone Workstation
    Registered Owner:          IAMADMIN
    Original Install Date:     2011-12-15, 10:56:07 AM
    System Boot Time:          2013-05-27, 9:55:36 AM
    System Manufacturer:       DELL
    System Model:              4009BF7
    Time Zone:                 (UTC-05:00) Eastern Time (US & Canada)
    Total Physical Memory:     16,316 MB
    Available Physical Memory: 11,356 MB
Run Code Online (Sandbox Code Playgroud)

并尝试将第二列数据放入变量中.取决于我是否想要它.我正在使用Findstr来清除它.

    @echo off
    setlocal enabledelayedexpansion

    systeminfo > temp.txt
    set "tmp_result_file=temp.txt"

    for /f "tokens=3-7 delims= " %%i in ('FINDSTR /C:"OS …
Run Code Online (Sandbox Code Playgroud)

regex windows cmd batch-file findstr

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

第二个模式sed后删除行

我正在寻找修剪文件,我需要在第二场比赛后(以及第一场比赛前的所有内容)删除所有内容.

比如说我有这个文字:

xxx xxx
yyy yyy
New USB device found
xxx xxx
yyy yyy
zzz zzz
New USB device found
xxx xxx
yyy yyy
Run Code Online (Sandbox Code Playgroud)

如果我使用以下sed命令:

sed -i '1,/New USB device found/d' <FILE>  
Run Code Online (Sandbox Code Playgroud)

这会在第一场比赛前删除所有内容.这很棒:

New USB device found
xxx xxx
yyy yyy
zzz zzz
New USB device found
xxx xxx
yyy yyy
Run Code Online (Sandbox Code Playgroud)

但我只有1/2路,现在我想在第二场比赛后删除所有内容以获得此结果:

New USB device found
xxx xxx
yyy yyy
zzz zzz
Run Code Online (Sandbox Code Playgroud)

因此只是第一个设备的数据.

bash awk sed

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

使用bash脚本注释/ fstab中的行

我需要一个bash脚本命令来查看/ etc/fstab并找到包含挂载名称"/ mymount"的行,并在行的开头添加一个"#"来注释掉它.

由此:

    /dev/lv_mymount /mymount  ext4    defaults        1 2
Run Code Online (Sandbox Code Playgroud)

对此(带#):

    #/dev/lv_mymount /mymount  ext4    defaults        1 2
Run Code Online (Sandbox Code Playgroud)

bash

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

检查变量中的字符串

在bash中,我经常检查一个变量的值,它是否可以这样做?有没有更好的办法?

例:

    if [ "`echo ${file} | grep -vE '(Trash|home)'`" ] ;then
Run Code Online (Sandbox Code Playgroud)

这是检查变量文件不包含单词Trash或home,如果它不执行某些操作.关键是我使用echo和grep,我认为这可能是浪费.

另一个例子:

    if [ "`less ${TEMPQUERY} | grep 'http'`" ] ;then
Run Code Online (Sandbox Code Playgroud)

这是检查文件中的字符串http,如果它在文件中,则执行某些操作.

我想我只是想知道别人做了什么,如果有一些强烈的理由我不应该以这种方式编码.无论如何,提前谢谢你的时间.

bash

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

试图找出MM/DD/YYYY与DD/MM/YYYY

我需要弄清楚当前日期6/6/2013是否为MM/DD/YYYY与DD/MM/YYYY格式.因此他们都是"6".

我要做的是采取当前日期,然后添加3天,从那里我会知道哪一个是MM字段,因为它不会改变.我不知道如何批量打印日期+ 3天.它甚至可能吗?有没有人有任何想法?我已经在这里待了几个小时.我试图使用GNU date命令,但我必须指定输出,所以它没有帮助.. GRR!

注意,这适用于WINDOWS.请注意,我正在查看的文件无法更改,因此如果日期是9/9/2013,那么我必须使用它来确定字段.

编辑:我最终使用以下代码:它有点完成但你可以看到我基本上是这样做的.我设置值的原因是因为我将它与Gnu date.exe命令结合使用,该命令非常适合根据特定日期提供日期.所以脚本中的其他地方我使用它如下:date.exe - 日期"现在-90天"%DATEFORMAT%.我不得不放弃在另一篇文章中建议的日期/ T选项,因为这实际上并没有显示所有情况下的正确数据.

for /F "skip=1 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v sShortDate ^< NUL') do (
    echo.%%a|findstr /C:"/" >nul 2>&1 && set DELIM=/
    echo.%%a|findstr /C:"-" >nul 2>&1 && set DELIM=-
    echo.%%a|findstr /C:"." >nul 2>&1 && set DELIM=.

    for /F "tokens=1-3 delims=-/." %%b in ("%%a") do (
        set format=%%b%%c%%d
    )
)

if %DELIM%==/ ( 
    :: US English options 
    if %format%==Mdyyyy set DATEFORMAT=+%%-m/%%-d/%%Y 
    if %format%==Mdyy set DATEFORMAT=+%%-m/%%-d/%%y
    if %format%==MMddyy set DATEFORMAT=+%%m/%%d/%%y …
Run Code Online (Sandbox Code Playgroud)

batch-file

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

标签 统计

bash ×6

batch-file ×2

sed ×2

animation ×1

awk ×1

cmd ×1

findstr ×1

javascript ×1

regex ×1

shell ×1

sorting ×1

windows ×1

yum ×1