Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Linux中拆分行_Linux_Bash_Cmd - Fatal编程技术网

如何在Linux中拆分行

如何在Linux中拆分行,linux,bash,cmd,Linux,Bash,Cmd,我有一个包含几行的文件,每行包含一个url- http://some_address1/some_page1/anther_page1/my_target1 http://some_address2/some_page2/some_page2/my_target2 ... 我想创建一个新的文件,它将有每个url的结尾- my-target1 my_target2 ... 在Linux cmd中如何执行此操作?您可以使用basename: basename”http://some_addres

我有一个包含几行的文件,每行包含一个url-

http://some_address1/some_page1/anther_page1/my_target1
http://some_address2/some_page2/some_page2/my_target2
...
我想创建一个新的文件,它将有每个url的结尾-

my-target1
my_target2
...

在Linux cmd中如何执行此操作?

您可以使用
basename

basename”http://some_address1/some_page1/anther_page1/my_target1"
应用于文件中的所有行:

xargs basename
您可以使用awk,将
/
设置为字段分隔符,并打印最后一个字段(
$NF
):

输出:

my_target1
my_target2
...

要创建新文件,将在上述命令之后添加每个url的末尾。这将创建一个名为
newfile
的新文件,或覆盖它(如果它已存在),并将上述输出发送给它。

您可以使用此bash命令,其中
file
是输入文件的路径,
output
是所需输出的路径:

while read line; do basename $line; done < file > output
读行时
;不要使用basename$line;完成<文件>输出

使用bash数组和参数扩展,需要bash4+,因为
mapfile

#/usr/bin/env bash
mapfile-t url
  • 触摸“$i”
    替换
    printf“%s\n'$i”
    ,或仅用
    >“$i”
    创建一个新的空文件
使用
sed

sed 's|^.*/||' file > new_file

请展示你的尝试。提示:在
awk
sed
中可以很容易地完成,url的长度不一样,结尾也不一样,所以我需要通过在每个url中最后一个“/”来对每个url进行分类。@yiaca:
man basename
正如我所理解的问题,@yiaca想要创建(空的?)文件,而不仅仅是打印url的结尾。awk-F/'/^http/{print$0>$NF}'会更合适(它会在文件中最后一个字段的名称中写入整行)。我们只需等待op返回并对此进行详细说明。“…或者用相同的名称覆盖预先存在的文件并将上述输出发送给它。”您是说用
awk-F/{print$NF}更新文件吗'文件>文件
?操作系统会在读取之前截断…@PaulHodges不,我是说
awk。。。file>newfile
可能会覆盖先前存在的
newfile
。你不知道我的修正是否让事情变得更清楚了D感谢您指出。有趣地使用
basename
xargs basenameout
消除了UUoC。这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-我想是的。这正是我给出的解决方案。
sed 's|^.*/||' file > new_file